dotfiles/tasks/__init__.py

124 lines
3.2 KiB
Python
Raw Normal View History

import os
import sys
from invoke import Collection, ctask
from . import osx
from . import linux
from .util import DOTFILES_DIRECTORY, RESOURCES_DIRECTORY
ns = Collection()
ns.add_collection(osx)
ns.add_collection(linux)
@ctask(default=True)
def setup(ctx):
ctx.config['run']['pty'] = False
ctx.config['run']['warn'] = True
dotfiles(ctx, 'f')
if 'darwin' in sys.platform:
osx.setup(ctx)
else:
linux.setup(ctx)
install_python_libraries(ctx)
powerline(ctx)
2014-10-22 21:59:51 -06:00
install_npm_libraries(ctx)
2014-10-10 17:22:15 -06:00
change_shell(ctx)
@ctask
2014-10-22 21:59:51 -06:00
def dotfiles(ctx, flags=''):
ctx.run('hash dotfiles || sudo pip install dotfiles')
2014-10-10 05:35:51 -06:00
return ctx.run('dotfiles -s{1} -R {0}'.format(DOTFILES_DIRECTORY, flags))
2014-11-22 06:09:53 -07:00
@ctask
def dropbox_dotfiles(ctx, flags='f'):
ctx.run('hash dotfiles || sudo pip install dotfiles')
ctx.run('dotfiles -s{1} -R {0}'.format(
os.path.join(
os.path.expanduser('~'), 'Dropbox', 'configs', 'dotfiles'
),
flags
))
2014-12-15 17:50:58 -07:00
link_filenames(ctx, [('~/Dropbox/configs/custom.el', '~/.emacs.d/custom.el')], force=True)
2014-11-22 06:09:53 -07:00
@ctask
def powerline(ctx):
ctx.run('sudo pip install psutil')
2014-11-10 04:37:59 -07:00
ctx.run('sudo pip install git+git://github.com/Lokaltog/powerline')
@ctask
def install_python_libraries(ctx):
2014-11-10 04:37:59 -07:00
ctx.run('sudo pip install setuptools --upgrade')
ctx.run('sudo pip install -r {0}'.format(
os.path.join(RESOURCES_DIRECTORY, 'requirements.txt')
))
2014-10-10 16:56:34 -06:00
@ctask
def install_npm_libraries(ctx):
ctx.run('source {0}'.format(
os.path.join(RESOURCES_DIRECTORY, 'npm.sh')
))
@ctask
def vimstall(ctx):
ctx.run('vim +BundleInstall! +q +q')
2014-10-10 17:22:15 -06:00
@ctask
def change_shell(ctx):
ctx.run('sudo chsh -s $(which zsh) $(whoami)')
2014-11-21 03:56:16 -07:00
@ctask
2014-12-15 17:50:58 -07:00
def link_dropbox_other(ctx, force=False):
2014-11-21 03:56:16 -07:00
link_pairs = (
('~/Dropbox/Documents', '~/Documents'),
2014-12-06 13:48:06 -07:00
('~/Dropbox/Pictures', '~/Pictures'),
2014-12-02 08:06:21 -07:00
('~/Dropbox/org', '~/org')
2014-12-15 17:50:58 -07:00
('~/Dropbox/Desktop', '~/Desktop')
2014-11-21 03:56:16 -07:00
)
2014-12-15 17:50:58 -07:00
link_filenames(ctx, link_pairs, force)
def link_filenames(ctx, link_pairs, force=False)
2014-11-21 03:56:16 -07:00
for source, destination in link_pairs:
destination = os.path.expanduser(destination)
source = os.path.expanduser(source)
2014-12-15 17:50:58 -07:00
if force:
ctx.run("sudo rm -rf {0}".format(destination))
2014-11-21 03:56:16 -07:00
if os.path.exists(destination):
print("Skipping {0} because path already exists".format(destination))
else:
print("Linking {0} to {1}".format(destination, source))
ctx.run('ln -s {0} {1}'.format(source, destination))
@ctask
def customize_user_settings(ctx):
input_function = input if sys.version_info.major == 3 else raw_input
2014-11-10 04:37:59 -07:00
username = input_function("Enter the user's full name: ")
email = input_function("Enter the user's email address: ")
with open(os.path.expanduser('~/.gitconfig.custom'), 'w') as custom_file:
custom_file.write("""[user]
name = {0}
email = {1}""".format(username, email))
2014-10-10 17:22:15 -06:00
ns.add_task(change_shell)
ns.add_task(customize_user_settings)
ns.add_task(dotfiles)
2014-10-22 21:59:51 -06:00
ns.add_task(install_npm_libraries)
ns.add_task(install_python_libraries)
2014-11-22 06:09:53 -07:00
ns.add_task(dropbox_dotfiles)
ns.add_task(powerline)
ns.add_task(setup)
ns.add_task(vimstall)