Remove rake provisioner (using ansible instead)

This commit is contained in:
Henrik Lissner 2016-02-25 18:43:56 -05:00
parent 1e0299c5d7
commit 72115b8ced
27 changed files with 0 additions and 1040 deletions

View file

@ -1,73 +0,0 @@
# Rake install scripts
I use global rakefiles to provision my computers and servers. They
work for OSX and Ubuntu; a `rake -g -T` will reveal all the available
options.
Running `rake -g update` will run the rake task that matches your
computer's hostname; they can be found in
`rake/nodes/<hostname>.rake`. I have one for each of my computers.
Feel free to take from it what you like.
## Packages
This currently provides:
* Homebrew
* OSX settings
* Zsh + zprezto -- deploys my [zsh dotfiles](http://github.com/hlissner/dotfiles)
* Emacs (mac only) -- deploys my [emacs.d](http://github.com/hlissner/emacs.d)
* Vim -- deploys my [vimrc](https://github.com/hlissner/dotfiles/blob/master/vimrc)
* Pyenv
* Rbenv
Planned features:
* Gitlab
* Flexget seedbox
* Webserver stacks for vagrant
## Installation
Simply symlink `./rake` to `~/.rake`, then these commands will become
accessible globally via `rake -g [task]`.
```sh
git clone https://github.com/hlissner/dotfiles ~/.dotfiles
ln -sf ~/.dotfiles/rake ~/.rake
```
Or just cd into `./rake` and work from there.
## Usage
```sh
rake -g # Same as: rake -g setup:`hostname`
rake -g update # Same as: rake -g setup:`hostname`
# This will install all the things specified in
# rake/nodes/<hostname>.rake and/or update them if already installed.
rake -g setup:<hostname>
# Installs <package>, or updates it
rake -g pkg:<package>
# Package sub-commands
rake -g pkg:<package>:install
rake -g pkg:<package>:remove
rake -g pkg:<package>:update
rake -g destroy # Runs pkg:*:remove and deletes all packages
```
A couple examples:
```sh
# Install/update homebrew, zsh and emacs
rake -g pkg:homebrew
rake -g pkg:zsh
rake -g pkg:emacs
# Install/update my config for ganymede
rake -g setup:ganymede
```

View file

@ -1,14 +0,0 @@
desc "Open a task in your editor"
task :edit, :package do |t, args|
p "No package specified!" unless args.package
#prefix = __dir__
#path = "#{prefix}/#{args.package.gsub(":", "/").strip}.rake"
begin
path = Rake.application[args.package].actions.map(&:source_location).first.first
echo "Opening #{path}"
sh "$EDITOR #{path}"
rescue
error "No task found"
end
end

View file

@ -1,12 +0,0 @@
include Rake::DSL
def git(url, dest)
unless Dir.exists?("#{dest}/.git")
rm_rf dest if Dir.exists?(dest)
sh "git clone '#{url}' '#{dest}'"
end
end
def github(repo, dest, protocol = "https")
git "#{protocol}://github.com/#{repo}.git", dest
end

View file

@ -1,9 +0,0 @@
def is_mac?
RUBY_PLATFORM =~ /darwin/
end
def is_linux?
RUBY_PLATFORM =~ /linux/
end
# TODO Implement other linux distro tests

View file

@ -1,9 +0,0 @@
def echo(msg, level = 1)
# print green text
puts "\e[32m#{"="*level}> #{msg}\e[0m"
end
def error(msg)
# print red text
puts "\e[31m=> #{msg}\e[0m"
end

View file

@ -1,13 +0,0 @@
require_relative "sh"
require_relative "os"
include Rake::DSL
if is_mac?
require_relative "package_adapters/homebrew.rb"
elsif is_linux?
require_relative "package_adapters/aptitude.rb"
# TODO Implement centos yum support
else
raise "Could not detect OS"
end

View file

@ -1,30 +0,0 @@
# Aptitude (ubuntu/debian) package adapter
module Package
module_function
def bootstrap; end
def install(package)
self.run("install", "-y", package)
end
def installed?; end
def remove(package); end
def update(*args); end
def tap(repo)
sh_safe "sudo add-apt-repository #{repo}"
end
def untap(repo); end
def tapped?(repo); end
# TODO Finish aptitude adapter
def run(*args)
system("sudo apt-get #{args.join(' ')}")
end
end

View file

@ -1,66 +0,0 @@
# Homebrew package adapter
module Package
module_function
@@brew_bin = "/usr/local/bin/brew"
def bootstrap
unless self.installed?
sh_safe 'ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"'
end
end
def install(package)
self.run("install", package) unless self.installed?(package)
end
def installed?(package = nil)
return File.exists?(@@brew_bin) if !package
self.run("list | grep -w '^#{package.split(" ")[0]}$' >& /dev/null")
end
def remove(package)
self.run("remove", package)
end
def update(*args)
if args.length > 0
self.run("upgrade #{args.join(' ')}")
else
self.run("update")
self.run("upgrade")
end
end
def tap(repo)
self.run("tap", repo) unless self.tapped?(repo)
end
def untap(repo)
self.run("untap #{repo}")
end
def tapped?(repo)
self.run("tap | grep -w '^#{repo}$' >& /dev/null")
end
# Homebrew-specific functions
def cask_install(cask)
self.run("cask", "install", cask) unless self.cask_installed?(cask)
end
def cask_remove(cask)
self.run("cask", "uninstall", cask) unless self.cask_installed?(cask)
end
def cask_installed?(cask)
self.run("cask list | grep -w '^#{cask}$' >& /dev/null")
end
def run(*args)
raise "Homebrew isn't installed!" unless self.installed?
system("#{@@brew_bin} #{args.join(' ')}")
end
end

View file

@ -1,3 +0,0 @@
def load_all(glob)
Dir.glob("#{File.dirname(__FILE__)}/../#{glob}") { |file| load file }
end

View file

@ -1,19 +0,0 @@
require_relative 'output'
# A 'safe' sh function that won't stop rake in its tracks
# when it encounters a problem. I'll leave it up to the
# programmer to expect problems and terminate when necessary.
def sh_safe(cmd)
begin
return sh(cmd)
rescue
error $!
return false
end
end
def do_link(src, dest)
if not (File.exist?(path_to_file) || File.symlink?(path_to_file))
sh_safe "ln -sf #{src} #{dest}"
end
end

View file

@ -1,9 +0,0 @@
desc "My home server"
task :callisto do
%w{
update
pkg:zsh
pkg:vim
pkg:rbenv
}.each { |task| Rake::Task[task].invoke }
end

View file

@ -1,2 +0,0 @@
desc "My work laptop"
task :ganymede => :io

View file

@ -1,46 +0,0 @@
desc "My main computer"
task :io do
sh "cd ~/.dotfiles && git pull"
[ "pkg:update",
"pkg:osx",
"pkg:nodejs",
"pkg:zsh",
"pkg:vim",
"pkg:emacs",
"pkg:rbenv",
"pkg:pyenv"
# "pkg:love"
].each { |task| Rake::Task[task].invoke }
# Install my the mac-apps I commonly use
if is_mac?
[ "dropbox",
"imagealpha",
"imageoptim",
"xquartz",
"openemu",
"transmit",
"transmission",
"vlc",
"flux",
"skype",
"adium",
"mindnode-pro",
"sequel-pro",
"scrivener",
"omnigraffle",
# Quicklook plugins
"qlcolorcode",
"qlstephen",
"qlmarkdown",
"quicklook-json",
"qlprettypatch",
"quicklook-csv",
"betterzipql",
"webp-quicklook",
"suspicious-package"
].each { |app| Package.cask_install app }
end
end

View file

@ -1,2 +0,0 @@
desc "My media desktop"
task :titan => :io

View file

@ -1,37 +0,0 @@
require_relative "lib/git"
require_relative "lib/os"
require_relative "lib/output"
require_relative "lib/rake"
require_relative "lib/sh"
verbose(false)
namespace :pkg do
desc 'Setup/update package manager & packages'
if is_mac?
task :update => 'homebrew:update'
elsif is_linux?
task :update => 'aptitude:update'
else
task :update do
echo "Package manager not implemented for this OS"
end
end
load_all("pkg/*.rake")
end
namespace :test do
task :output do
echo "Testing output"
echo "Testing sub-header output", 2
echo "Another sub-header", 3
error "A big bad error!"
end
task :tasks do
sh "echo 'This should pass'"
sh_safe "fake-command_ This should fail" # without disrupting the task
end
end

View file

@ -1,30 +0,0 @@
desc "Ensure bash is setup & up-to-date"
task :bash => 'bash:update'
namespace :bash do
task :install do
echo "Attempting to install bash + completion"
Package.install "bash"
Package.install "bash-completion"
if is_mac?
# Write the new bash into shells if it isn't already there
bash_bin = "/usr/local/bin/bash"
if `cat /etc/shells | grep "^#{bash_bin}$"`
echo "Writing '#{bash_bin}' to /etc/shells", 2
sh_safe "echo '#{bash_bin}' | sudo tee -a /etc/shells"
end
sh_safe "chsh -s #{bash_bin}"
end
end
task :update => "bash:install"
task :remove do
if is_mac?
Package.remove "bash"
Package.remove "bash-completion"
end
end
end

View file

@ -1,79 +0,0 @@
if is_mac?
ENV["EMACS_D"] = File.expand_path("~/.emacs.d")
def emacs_reqs
[ "emacs --with-cocoa --with-gnutls --with-imagemagick --with-librsvg --HEAD",
"ispell",
"cask",
"markdown" ]
end
def node_reqs
%w{jshint jsonlint js-beautify git://github.com/ramitos/jsctags.git}
end
def setup
echo "Installing emacs dependencies"
emacs_reqs.each { |pkg| Package.install pkg }
end
def setup_node
echo "Installing node dependencies"
sh_safe "/usr/local/bin/npm install -g #{node_reqs.join(' ')}"
end
def setup_emacs_d
echo "Setting up emacs.d & updating cask"
github 'hlissner/emacs.d', '~/.emacs.d'
sh_safe "cd '#{ENV["EMACS_D"]}' && cask install"
end
def emacs_installed?
Dir.exists?(ENV["EMACS_D"])
end
#
desc "Ensure emacs 24.4 is installed & up to date"
task :emacs => "emacs:update"
namespace :emacs do
desc "Install emacs completely"
task :install => ["pkg:nodejs:install", :setup, :setup_node, :setup_emacs_d]
desc "Setup required homebrew packages"
task :setup do
setup if !emacs_installed? || ENV["FORCE"]
end
desc "Setup required node & node plugins"
task :setup_node do
setup_node if !emacs_installed? || ENV["FORCE"]
end
desc "Setup emacs.d folder, plugins and cask"
task :setup_emacs_d do
setup_emacs_d if !emacs_installed? || ENV["FORCE"]
end
task :update => "emacs:install" do
if emacs_installed? && Dir.exists?("#{ENV['EMACS_D']}/.git")
echo "Updating emacs.d & packages"
sh_safe "cd '#{ENV["EMACS_D"]}' && git pull && cask update"
# Update node
sh "/usr/local/bin/npm update -g #{node_reqs.join(' ')}"
end
end
task :remove do
echo "Uninstalling emacs"
Package.remove "emacs"
Package.remove "homebrew/dupes/tidy"
emacs_reqs.each { |pkg| Package.remove pkg.split.first }
rm_rf ENV["EMACS_D"] if Dir.exists? ENV["EMACS_D"]
end
end
end

View file

@ -1,39 +0,0 @@
ENV["LINUX_PPA"] = "ppa:bartbes/love-stable"
desc "Install/update Lua, Love2D & luarocks"
task :love => "love:update"
namespace :love do
task :install do
if !system("which luarocks")
echo "Installing Lua, Love2D and luarocks"
if is_linux?
Package.install "lua5.1"
Package.tap ENV["LINUX_PPA"]
Package.install "luarocks"
Package.install "love"
elsif is_mac?
Package.install "lua"
Package.cask_install "love"
Package.install "luarocks --HEAD"
end
sh_safe "luarocks install --server=http://rocks.moonscript.org moonrocks"
sh_safe "luarocks install busted"
end
end
task :update
task :remove do
Package.remove "luarocks"
if is_linux?
Package.remove "love"
Package.untap ENV["LINUX_PPA"]
elsif is_mac?
Package.cask_remove "love"
end
end
end

View file

@ -1,13 +0,0 @@
task :mjolnir => 'mjolnir:update'
namespace :mjolnir do
task :install do
Package.install "lua", "luarocks"
sh "mkdir -p ~/.luarocks"
sh "echo 'rocks_servers = { \"http://rocks.moonscript.org\" }' > ~/.luarocks/config.lua"
sh "luarocks install mjolnir.hotkey"
sh "luarocks install mjolnir.application"
sh "luarocks install mjolnir._asm.modal_hotkey"
end
end

View file

@ -1,40 +0,0 @@
def node_installed?
File.exists?(is_mac? ? "/usr/local/bin/node" : "/usr/bin/nodejs")
end
desc "Ensure nodejs & its prerequisites are installed"
task :nodejs => "pkg:nodejs:update"
namespace :nodejs do
desc "Install node.js completely"
task :install do
unless node_installed?
echo "Installing node"
if is_linux?
sh_safe "curl -sL https://deb.nodesource.com/setup | sudo bash -"
Package.update
end
Package.install is_mac? ? "node" : "nodejs"
Package.install "npm" if is_linux?
end
end
if node_installed?
task :update => :install do
echo "Updating node"
if is_mac?
Package.update "node"
elsif is_linux?
sh_safe "npm cache clean -f"
sh_safe "npm update npm -g"
end
end
task :remove do
echo "Uninstalling node"
sh_safe "npm uninstall npm -g"
Package.remove is_mac? ? "node" : "nodejs"
end
end
end

View file

@ -1,99 +0,0 @@
# coding: utf-8
require_relative '../lib/output'
desc "Set OSX default configuration"
task :osx do
next unless is_mac?
if system('defaults read com.apple.finder _FXShowPosixPathInTitle >&/dev/null')
echo 'OSX settings already applied!'
next
end
echo "Applying OSX settings"
[
'chflags nohidden "${HOME}/Library"',
# 'defaults write NSGlobalDomain KeyRepeat -int 0',
# Disable press-and-hold for keys in favor of key repeat
'defaults write ApplePressAndHoldEnabled -bool false',
'defaults write NSGlobalDomain AppleKeyboardUIMode -int 3',
'defaults write NSGlobalDomain AppleFontSmoothing -int 2',
'defaults write NSGlobalDomain AppleShowAllExtensions -bool true',
'defaults write com.apple.dock autohide -bool true',
# Expand save panel by default
'defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true',
'defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true',
# Disable app quarantine
'defaults write com.apple.LaunchServices LSQuarantine -bool false',
# Disable auto-correct
'defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false',
# Disable smart quotes
'defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false',
# Disable smart dashes as they're annoying when typing code
'defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false',
# Avoid creating .DS_Store files on network volumes
'defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true',
# Disable the warning when changing a file extension
'defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false',
'defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true',
# Disable local Time Machine backups
# sh_safe 'hash_safe tmutil &> /dev/null && sudo tmutil disablelocal'
# Prevent Time Machine from prompting to use new hard drives as backup volume
'defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true',
# Finder: allow text selection in Quick Look
'defaults write com.apple.finder QLEnableTextSelection -bool true',
# When performing a search, search the current folder by default
'defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"',
### FINDER ###
# Use column view
'defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/"', # default location for new finder windows
'defaults write com.apple.finder FXPreferredViewStyle -string "clmv"', # column view by default
'defaults write com.apple.finder ShowPathbar -bool true', # path bar
'defaults write com.apple.finder ShowStatusBar -bool true', # status bar
'defaults write com.apple.finder _FXShowPosixPathInTitle -bool true', # path in window title
# Disable the warning before emptying the Trash
'defaults write com.apple.finder WarnOnEmptyTrash -bool false',
# Disable Dashboard
'defaults write com.apple.dashboard mcx-disabled -bool true',
# Dont show Dashboard as a Space
'defaults write com.apple.dock dashboard-in-overlay -bool true',
# Make Dock icons of hidden applications translucent
'defaults write com.apple.dock showhidden -bool true',
# Disable Spotlight indexing for any volume that gets mounted and has not yet
# been indexed before.
# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume.
'sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes"',
### Text edit ###
# Use plain text mode for new TextEdit documents
'defaults write com.apple.TextEdit RichText -int 0',
# Open and save files as UTF-8 in TextEdit
'defaults write com.apple.TextEdit PlainTextEncoding -int 4',
'defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4',
# Disable the sudden motion sensor as its not useful for SSDs
'sudo pmset -a sms 0',
# Load new settings before rebuilding the index
'killall mds > /dev/null 2>&1',
'killall Finder',
'killall Dock'
].each { |cmd| sh_safe cmd }
end

View file

@ -1,80 +0,0 @@
require_relative "../lib/package"
if is_mac?
desc "Update/setup homebrew"
task :homebrew => "homebrew:update"
namespace :homebrew do
task :setup do
unless Package.installed?
echo "Installing Homebrew..."
Package.bootstrap
Package.tap 'homebrew/dupes'
Package.tap 'caskroom/cask'
end
Package.install 'brew-cask'
# Essentials for all macs; specific brews are placed
# in the node/*.rake files
[ "coreutils",
"wget",
"curl",
"tree",
"git",
"hub",
"the_silver_searcher",
"tmux",
"gist",
"lua",
"readline",
"openssl",
"node"
].each { |pkg| Package.install pkg }
[ "appcleaner",
"vagrant",
"virtualbox",
"growlnotify",
"iterm2",
"java",
"launchbar"
].each { |app| Package.cask_install app }
echo "Homebrew is installed. Moving on."
end
task :update => "homebrew:setup" do
echo "Updating homebrew..."
Package.update
end
task :remove do
Package.destroy if Package.installed?
end
end
elsif is_linux?
desc "Update/setup aptitude"
task :aptitude => "aptitude:update"
namespace :aptitude do
task :setup do
echo "Updating packages..."
Package.update
[ "git",
"tmux",
"curl",
"ruby2.0",
"rake"
].each { |pkg| Package.install pkg }
end
task :update => 'aptitude:setup'
end
end

View file

@ -1,83 +0,0 @@
PYENV_ROOT = File.expand_path("~/.pyenv")
def pyenv_installed?
Dir.exists?(PYENV_ROOT)
end
def pyenv_versions
`ls -1 #{PYENV_ROOT}/versions`.split("\n") if Dir.exists? "#{PYENV_ROOT}/versions"
end
def pyenv_plugins
Dir.glob("#{PYENV_ROOT}/plugins/*")
end
def pyenv_version_installed?(version)
versions = pyenv_versions
versions.include?(version) if versions
end
###
desc "Install/update pyenv & all pythons"
task :pyenv => 'pyenv:update'
namespace :pyenv do
task :install do
unless pyenv_installed?
echo "Installing pyenv"
github "yyuu/pyenv", PYENV_ROOT
[ "yyuu/pyenv-doctor",
"yyuu/pyenv-installer",
"yyuu/pyenv-pip-rehash",
"yyuu/pyenv-update",
"yyuu/pyenv-virtualenv",
"yyuu/pyenv-which-ext"
].each do |pkg|
echo "Installing #{pkg}", 2
github pkg, "#{PYENV_ROOT}/plugins/#{pkg.split("/")[1]}"
end
echo "Initializing pyenv", 2
sh_safe "eval \"$(#{PYENV_ROOT}/bin/pyenv init -)\""
sh_safe "eval \"$(#{PYENV_ROOT}/bin/pyenv virtualenv-init -)\""
end
['3.4.3', '2.7.10'].each do |version|
unless pyenv_version_installed? version
# Install global python + packages
echo "Setting up default python (#{version})", 2
sh_safe "pyenv install #{version}"
sh_safe "pyenv global #{version}"
sh_safe "PYENV_VERSION=#{version} #{PYENV_ROOT}/shims/pip install flake8"
sh_safe "PYENV_VERSION=#{version} #{PYENV_ROOT}/shims/pip install nose virtualenv pyyaml ipython"
end
end
end
task :update => "pyenv:install" do
echo "Updating pyenv & plugins"
sh_safe "cd #{PYENV_ROOT} && git pull"
pyenv_plugins.each do |dir|
echo "Updating #{File.basename(dir)}", 2
sh_safe "cd #{dir} && git pull"
end
pyenv_versions.each do |version|
echo "Updating python #{version}", 2
cmd = "#{PYENV_ROOT}/shims/pip"
cmd = "sudo #{version}" if version == "system"
sh_safe "PYENV_VERSION=#{version} #{cmd} freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs #{cmd} install -U"
end
end
if pyenv_installed?
task :remove do
echo "Deleting pyenv"
sh_safe "rm -rf #{PYENV_ROOT}"
end
end
end

View file

@ -1,103 +0,0 @@
RBENV_ROOT = File.expand_path('~/.rbenv')
def rbenv_installed?
Dir.exist?(RBENV_ROOT)
end
def rbenv_versions
return [] unless Dir.exist? "#{RBENV_ROOT}/versions"
`ls -1 #{RBENV_ROOT}/versions`.split("\n")
end
def rbenv_plugins
Dir.glob("#{RBENV_ROOT}/plugins/*")
end
def rbenv_set_default_gems(*gems)
default_gems_file = "#{RBENV_ROOT}/default-gems"
File.write(default_gems_file, gems.join("\n"))
end
def rbenv_version_installed?(version)
rbenv_versions.include?(version)
end
###
desc 'Install/update rbenv & all rubies'
task rbenv: 'rbenv:update'
namespace :rbenv do
task :install do
unless rbenv_installed?
echo 'Installing rbenv'
github 'sstephenson/rbenv', RBENV_ROOT
mkdir_p "#{RBENV_ROOT}/plugins"
['sstephenson/rbenv-vars',
'sstephenson/ruby-build',
'sstephenson/rbenv-default-gems',
'sstephenson/rbenv-gem-rehash',
'fesplugas/rbenv-installer',
'fesplugas/rbenv-bootstrap',
'rkh/rbenv-update',
'rkh/rbenv-whatis',
'rkh/rbenv-use'
].each do |pkg|
echo "Installing #{pkg}", 2
github pkg, "#{RBENV_ROOT}/plugins/#{pkg.split('/')[1]}"
end
echo 'Initializing rbenv', 2
sh_safe "eval \"$(#{RBENV_ROOT}/bin/rbenv init -)\""
end
# Set default gems
rbenv_set_default_gems(
'bundler',
'rspec',
'doing',
'pry',
'pry-doc',
'pry-byebug',
'pry-rescue',
'pry-stack_explorer',
'ripper-tags',
'gem-ripper-tags'
)
# Install global ruby + gems
ruby_version = '2.1.6'
unless rbenv_version_installed? ruby_version
echo "Setting up default ruby (#{ruby_version})", 2
sh_safe "rbenv install #{ruby_version}"
sh_safe "rbenv global #{ruby_version}"
sh_safe "RBENV_VERSION=#{ruby_version} #{RBENV_ROOT}/shims/gem install -f jekyll sass mercenary colorize pry pry-doc pry-byebug rake"
end
end
task update: 'rbenv:install' do
echo 'Updating rbenv & plugins'
sh_safe 'rbenv update'
rbenv_versions.each do |version|
echo "Updating ruby #{version}"
cmd = "#{RBENV_ROOT}/shims/gem"
cmd = "sudo #{cmd}" if version == 'system'
sh_safe "RBENV_VERSION=#{version} #{cmd} update --system -f"
sh_safe "RBENV_VERSION=#{version} #{cmd} update -f"
sh_safe "RBENV_VERSION=#{version} #{cmd} clean"
end
sh_safe 'rbenv rehash'
end
if rbenv_installed?
task :remove do
echo 'Deleting rbenv'
sh_safe "rm -rf #{RBENV_ROOT}"
end
end
end

View file

@ -1,65 +0,0 @@
desc "Ensure vim/macvim is installed and up to date"
task :vim => "vim:update"
namespace :vim do
task :install do
vim_path = File.expand_path("~/.vim")
if is_mac?
Package.install "lua"
%w{vim macvim}.each { |pkg| Package.install "#{pkg} --with-lua --with-luajit" }
elsif is_linux?
Package.install "lua5.1"
unless Dir.exists?(vim_path)
sh_safe "sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby1.9-dev mercurial"
sh_safe "hg clone https://code.google.com/p/vim/ /tmp/vim"
sh_safe "cd /tmp/vim && ./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp \
--enable-pythoninterp \
--enable-perlinterp \
--enable-luainterp \
--enable-clipboard \
--enable-cscope --prefix=/usr \
&& make VIMRUNTIMEDIR=/usr/share/vim/vim74
&& sudo make install"
sh_safe "rm -rf /tmp/vim"
end
end
Package.install "luajit"
unless Dir.exists?(vim_path)
github('hlissner/vim', vim_path)
github('Shougo/neobundle.vim', "#{vim_path}/bundle/neobundle.vim")
end
end
task :update => 'vim:install' do
path = File.expand_path("~/.vim")
echo "Updating vim"
sh_safe "cd #{path} && git pull"
echo "Updating vim plugins"
Dir.glob("#{path}/bundle/*") do |f|
echo ":: Updating #{File.basename(f)}:"
sh_safe "cd #{f} && git pull"
end
if is_linux?
echo "Can't update compiled vim itself! Use pkg:vim:install"
end
end
task :remove do
if is_mac?
echo "Uninstalling vim"
Package.remove "vim"
Package.remove "macvim"
end
end
end

View file

@ -1,45 +0,0 @@
desc "Ensure zsh & prezto are installed"
task :zsh => 'zsh:update'
ENV["PREZTO_PATH"] = File.expand_path("~/.zprezto")
namespace :zsh do
task :install do
echo "Attempting to install ZSH"
Package.install "zsh"
unless Dir.exists? ENV["PREZTO_PATH"]
echo "Installing prezto", 2
github 'hlissner/prezto', ENV["PREZTO_PATH"]
end
sh_safe '~/.dotfiles/install.sh'
unless `printenv SHELL | grep "/zsh$"`
echo "Setting shell to ZSH", 2
zsh_bin = is_mac? ? "/usr/local/bin/zsh" : "/usr/bin/zsh"
unless File.exists? zsh_bin
error "ZSH isn't in #{File.dirname(zsh_bin)}"
next
end
# Write the new zsh into shells if it isn't already there
if `cat /etc/shells | grep "^#{zsh_bin}$"`
echo "Writing '#{zsh_bin}' to /etc/shells", 3
sh_safe "echo '#{zsh_bin}' | sudo tee -a /etc/shells"
end
sh "chsh -s #{zsh_bin}"
end
echo "Comment out path_helper to fix PATH in emacs!" if is_mac?
end
task :update => "zsh:install" do
echo "Updating zprezto"
sh_safe 'cd ~/.zprezto && git pull'
end
task :remove do
sh_safe 'rm -rf ~/.zprezto' if Dir.exists? ENV["PREZTO_PATH"]
end
end

View file

@ -1,20 +0,0 @@
require_relative 'lib/output'
task :default => :update
desc "Update the node (based on hostname)"
task :update, :node do |t, args|
args.with_defaults(:node => `hostname`.gsub('.local', '').strip)
Rake::Task["setup:#{args.node}"].invoke
end
# desc "Wipe the slate clean"
task :destroy do
# are you sure?
# are you really really sure?
# TODO: EXTERMINATE!
end
namespace :setup do
load_all("node/*.rake")
end