dotfiles/tasks/osx.py

106 lines
3.3 KiB
Python
Raw Normal View History

import os
from invoke import ctask
2014-10-21 12:00:04 -06:00
from . import util
@ctask(default=True)
def all(ctx):
get_command_line_tools(ctx)
get_brew(ctx)
brew_install(ctx)
brew_cask(ctx)
2014-10-21 12:00:04 -06:00
setup_cocoa_emacs(ctx)
osx_config(ctx)
ESSENTIAL = (
2014-10-20 17:48:24 -06:00
"emacs --cocoa --srgb --with-x", "tmux", "python --with-brewed-openssl", "htop", "zsh", "make",
"macvim --override-system-vim --custom-system-icons --with-features=huge "
"--enable-rubyinterp --enable-pythoninterp --enable-perlinterp --enable-cscope"
)
BASICS=(
"findutils", "coreutils", "binutils", "diffutils", "ed --default-names",
"gawk", "gnu-indent --default-names", "gnu-sed --default-names",
"gnu-tar --default-names", "gnu-which --default-names", "gnutls --default-names",
"grep --default-names", "gzip", "watch", "wdiff --with-gettext", "wget --enable-iri"
)
SHOULD_INSTALL = (
"nmap", "readline", "netcat", "reattach-to-user-namespace", "daemonize",
"ngrep", "gist", "gawk", "pstree", "ack", "hub", "tig", "heroku", "scala",
"sbt", "node", "npm"
)
MISC = ("file-formula", "less", "openssh --with-brewed-openssl",
"perl518", "rsync", "svn", "unzip", "docker", "boot2docker", "pandoc",
"mercurial")
CASKS = ('caffeine', 'flux', 'google-chrome', 'iterm2', 'spotify',
2014-10-23 04:42:35 -06:00
'vlc', 'virtualbox', 'xquartz', 'synergy', 'slate', 'seil')
2014-10-21 12:00:04 -06:00
@ctask
def osx_config(ctx):
2014-10-21 12:00:04 -06:00
ctx.run('source {0}; osx_config'.format(
os.path.join(util.RESOURCES_DIRECTORY, 'osx.sh')
))
@ctask
def brew_cask(ctx):
ctx.run('brew install caskroom/cask/brew-cask')
for cask in CASKS:
ctx.run('brew cask install {0}'.format(cask))
2014-10-21 12:00:04 -06:00
@ctask
def get_brew(ctx):
2014-10-21 12:00:04 -06:00
if not util.command_exists('brew'):
ctx.run('ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"')
@ctask
def brew_install(ctx):
for package_name in ESSENTIAL + BASICS + SHOULD_INSTALL + MISC:
ctx.run('brew install {0}'.format(package_name))
2014-10-21 12:00:04 -06:00
2014-10-20 21:15:11 -06:00
@ctask
2014-10-21 12:00:04 -06:00
def setup_cocoa_emacs(ctx):
if not os.path.exists('/Applications/Emacs.app'):
ctx.run('ln -s $(brew --prefix emacs)/Emacs.app /Applications/Emacs.app', hide=True)
2014-10-21 12:00:04 -06:00
launch_agent_dir = os.path.expanduser('~/Library/LaunchAgents/')
filename = 'set-path.plist'
source = os.path.join(util.RESOURCES_DIRECTORY, filename)
destination = os.path.join(launch_agent_dir, filename)
if os.path.exists(source) and not os.path.exists(destination):
util.ensure_path_exists(launch_agent_dir)
ctx.run('ln -s {0} {1}'.format(source, destination))
2014-10-20 21:15:11 -06:00
APPS_NEEDING_ASSISTIVE_DEVICE_ACCESS = ('Slate', 'Synergy', 'iTerm')
@ctask
def enable_access_for_assitive_devices(ctx):
for app in APPS_NEEDING_ASSISTIVE_DEVICE_ACCESS:
app_string = '/Applications/{0}.app'.format(app)
user_application = os.path.expanduser('~' + app_string)
if os.path.exists(user_application):
ctx.run(
'source ~/.zshrc && '
'enable_access_for_assitive_devices "{0}"'.format(
user_application
)
)
if os.path.exists(app_string):
ctx.run(
'source ~/.zshrc && '
'enable_access_for_assitive_devices "{0}"'.format(app_string)
)
@ctask
def get_command_line_tools(ctx):
if not command_exists('gcc'):
ctx.run('xcode-select --install')