Skip to content

Instantly share code, notes, and snippets.

@gawel
Last active November 24, 2018 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gawel/5099501 to your computer and use it in GitHub Desktop.
Save gawel/5099501 to your computer and use it in GitHub Desktop.
from chut import * # noqa
@console_script(fmt='msg')
def backup(args):
"""
Usage: %prog [options] sync [<server>...]
%prog add <target>
%prog list
Options:
%options
"""
home = path.expanduser('~')
dirname = path.expanduser('~/.%s_backup' % str(hostname()))
chmod('700', dirname)
if not test.d(dirname):
mkdir('-p', dirname)
cfg = ini(filename=path.join(dirname, 'backup.ini'))
if not cfg.backup.excludes:
cfg.backup.excludes = [
'*.swp', '*.pyc', '*.egg-info',
'bin/', 'develop-eggs/', 'parts/'
]
cfg.write()
if not cfg.backup.targets:
filenames = []
for filename in ('~/.gitconfig', '~/.zshrc', '~/.vimrc'):
if test.f(path.expanduser(filename)):
filenames.append(filename)
if filenames:
cfg.backup.targets = filenames
cfg.write()
if args['add']:
targets = cfg.backup.targets.as_list()
target = args['<target>'].replace(home, '~')
if target not in targets:
targets.append(target)
cfg.backup.targets = sorted(targets)
cfg.write()
if args['list']:
for target in sorted(cfg.backup.targets.as_list()):
target = target.rstrip('/')
if test.f(path.expanduser(target)):
info(target)
else:
info(target + '/')
elif args['sync']:
excludes = []
for exc in cfg.backup.excludes.as_list('\n'):
excludes.extend(['--exclude', '"%s"' % exc])
for target in sorted(cfg.backup.targets.as_list()):
target = target.rstrip('/')
if test.f(path.expanduser(target)):
info('Backup {0}'.format(target))
else:
info('Backup {0}/'.format(target))
target = path.expanduser(target)
dest = path.join(dirname, target.replace(home, 'HOME'))
dest = path.dirname(dest)
mkdir('-p', dest)
rsync('-r --delete', *excludes + [target, dest], shell=True) > 1
for server in args['<server>']:
info('Sending to {0}'.format(server))
srv = ssh(server)
rsync('-r --delete', dirname, srv.join('.backup')) > 1
from chut import console_script, sudo
deps = ['python%s-dev' % i for i in ['2.7', '3.5']]
deps.extend(['ruby-dev'] + ['ruby%s-dev' % i for i in ['2.3']])
deps.extend([
# 'openjdk-7-jdk',
# 'virtualbox-4.3',
# 'xfce4-mixer',
# 'xfce4-power-manager',
# 'xfce4-volumed',
# 'mutt-patched',
'acpi',
'apt-file',
'awesome',
'build-essential',
'cheese',
'cmus',
'corkscrew',
'evince',
'firejail',
'ffmpeg',
'gthumb',
'git-core',
'gnome-terminal',
'gnupg-agent',
'i3-wm',
'i3lock',
'i3status',
'irssi',
'imagemagick',
'imapfilter',
'libcurl3',
'libav-tools',
'libavcodec-extra',
'libevent-dev',
'libjpeg-dev',
'libxml2-dev',
'libxslt1-dev',
'libssl-dev',
'linphone-nogtk',
'moreutils',
'mosh',
'mpg123',
'mutt',
'msmtp',
'ncftp',
'nmap',
'notify-osd',
'openvpn',
'pinentry-curses',
'pypy-dev',
'python-scipy',
'python3-scipy',
'rxvt-unicode',
'screen',
'sshfs',
'subversion',
'tig',
'tmux',
'transmission-cli',
'unar',
'vim-gtk',
'vlc',
'xautolock',
'xbacklight',
'zlib1g-dev',
'zsh',
])
deps.extend([
'texlive-latex-base',
'texlive-latex-recommended',
'texlive-latex-extra',
'texlive-fonts-recommended',
])
@console_script
def deb_install(args):
"""
Usage: %prog
"""
sudo.apt('update -y') > 1
sudo.apt('full-upgrade') > 1
sudo.apt('install -y', *deps) > 1
# sudo['update-alternatives']('--config x-terminal-emulator') > 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment