Add rake provision system
This commit is contained in:
		
							parent
							
								
									925d13a8db
								
							
						
					
					
						commit
						00ffb41218
					
				
							
								
								
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
source 'https://rubygems.org'
 | 
			
		||||
gem 'prowl'
 | 
			
		||||
gem 'simple-rss'
 | 
			
		||||
gem 'ruby-growl'
 | 
			
		||||
gem 'rake'
 | 
			
		||||
gem 'colorize'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										0
									
								
								rake/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								rake/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								rake/gamedev.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								rake/gamedev.rake
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										57
									
								
								rake/homebrew.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								rake/homebrew.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
 | 
			
		||||
require_relative "lib/output"
 | 
			
		||||
require_relative "lib/homebrew"
 | 
			
		||||
 | 
			
		||||
desc "Ensure homebrew is installed and up to date"
 | 
			
		||||
task :homebrew => 'homebrew:update'
 | 
			
		||||
 | 
			
		||||
namespace :homebrew do
 | 
			
		||||
 | 
			
		||||
    task :install do
 | 
			
		||||
        unless Homebrew.is_installed?
 | 
			
		||||
            echo "Installing Homebrew..."
 | 
			
		||||
            Homebrew.bootstrap
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        Homebrew.tap('homebrew/dupes')
 | 
			
		||||
        # Homebrew.tap('homebrew/python')
 | 
			
		||||
        Homebrew.tap('phinze/cask')
 | 
			
		||||
 | 
			
		||||
        %w{
 | 
			
		||||
            apple_gcc42
 | 
			
		||||
            coreutils
 | 
			
		||||
            wget
 | 
			
		||||
            curl
 | 
			
		||||
            tree
 | 
			
		||||
            git
 | 
			
		||||
            cask
 | 
			
		||||
            the_silver_searcher
 | 
			
		||||
            tmux
 | 
			
		||||
            gist
 | 
			
		||||
        }.each { |pkg| Homebrew.install pkg }
 | 
			
		||||
 | 
			
		||||
        %w{
 | 
			
		||||
            dropbox
 | 
			
		||||
            firefox
 | 
			
		||||
            appcleaner
 | 
			
		||||
            vagrant
 | 
			
		||||
            virtualbox
 | 
			
		||||
            growlnotify
 | 
			
		||||
            iterm2
 | 
			
		||||
            launchbar
 | 
			
		||||
            java
 | 
			
		||||
        }.each { |app| Homebrew.install_cask app }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    task :update => :install do
 | 
			
		||||
        echo "Updating homebrew..."
 | 
			
		||||
        Homebrew.update
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    desc "Remove homebrew cleanly"
 | 
			
		||||
    task :remove do 
 | 
			
		||||
        Homebrew.destroy if Homebrew.is_installed?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								rake/init.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								rake/init.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
require_relative 'lib/output'
 | 
			
		||||
 | 
			
		||||
desc "Provision the node"
 | 
			
		||||
task :init,:node do |t,args|
 | 
			
		||||
    args.with_defaults(:node => `hostname`.strip)
 | 
			
		||||
    # TODO: chop of the *.local in osx hostnames
 | 
			
		||||
 | 
			
		||||
    path = "#{File.dirname(__FILE__)}/node/#{args.node}.rb"
 | 
			
		||||
    if File.exists?(path)
 | 
			
		||||
        echo "Setting up node: #{args.node}"
 | 
			
		||||
        require_relative "node/#{args.node}"
 | 
			
		||||
    else
 | 
			
		||||
        echo "#{args.node} node does not exist!"
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										2
									
								
								rake/lib/fileutils.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								rake/lib/fileutils.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								rake/lib/git.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								rake/lib/git.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
include Rake::DSL
 | 
			
		||||
 | 
			
		||||
def git(url,dest)
 | 
			
		||||
    sh "git clone #{url} #{dest}" unless File.exists?(dest)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def github(repo,dest)
 | 
			
		||||
    git "git@github.com:#{repo}.git", dest
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										63
									
								
								rake/lib/homebrew.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								rake/lib/homebrew.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
include Rake::DSL
 | 
			
		||||
 | 
			
		||||
module Homebrew
 | 
			
		||||
    BIN = "/usr/local/bin/brew"
 | 
			
		||||
 | 
			
		||||
    def self.bootstrap
 | 
			
		||||
        unless self.is_installed?
 | 
			
		||||
            sh 'ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"'
 | 
			
		||||
            sh 'exec $SHELL -l'
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.destroy
 | 
			
		||||
        if self.is_installed?
 | 
			
		||||
            sh 'rm -rf /usr/local/Cellar /usr/local/.git ~/Library/Caches/Homebrew'
 | 
			
		||||
            sh 'brew prune'
 | 
			
		||||
 | 
			
		||||
            ['Library/Homebrew', 'Library/Aliases', 'Library/Formula', 'Library/Contributions'].each do |dir|
 | 
			
		||||
                sh "rm -r #{dir}"
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.install(keg, options=nil)
 | 
			
		||||
        sh "#{BIN} install #{keg} #{options}" unless self.is_keg_installed?(keg)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.install_cask(cask, options=nil)
 | 
			
		||||
        sh "#{BIN} cask install #{cask} #{options}" unless self.is_cask_installed?(cask)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.tap(tap)
 | 
			
		||||
        sh "#{BIN} tap #{tap}" unless self.is_tapped? tap
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.remove(keg)
 | 
			
		||||
        sh "#{BIN} remove #{keg}"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.has_keg?(keg)
 | 
			
		||||
        system("#{BIN} search #{keg}")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.is_keg_installed?(keg)
 | 
			
		||||
        system("#{BIN} list | grep -w '#{keg}'")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.is_cask_installed?(cask)
 | 
			
		||||
        system("#{BIN} cask list | grep -w '#{cask}'")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.is_tapped?(tap)
 | 
			
		||||
        system("#{BIN} tap | grep -w '#{tap}'")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.is_installed?
 | 
			
		||||
        File.exists?("usr/local/bin/brew")
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    def self.update()
 | 
			
		||||
        sh "#{BIN} update && #{BIN} upgrade"
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										5
									
								
								rake/lib/output.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								rake/lib/output.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
require 'colorize'
 | 
			
		||||
 | 
			
		||||
def echo(msg)
 | 
			
		||||
    puts "=> #{msg}".bold.green
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										8
									
								
								rake/node/callisto.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								rake/node/callisto.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
%w{
 | 
			
		||||
    osx
 | 
			
		||||
    homebrew
 | 
			
		||||
    zsh
 | 
			
		||||
    vim
 | 
			
		||||
    rbenv
 | 
			
		||||
    mongodb
 | 
			
		||||
}.each { |task| Rake::Task[task].invoke }
 | 
			
		||||
							
								
								
									
										1
									
								
								rake/node/ganymede.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								rake/node/ganymede.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
require_relative "io"
 | 
			
		||||
							
								
								
									
										29
									
								
								rake/node/io.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								rake/node/io.rb
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
require_relative 'lib/homebrew'
 | 
			
		||||
 | 
			
		||||
%w{
 | 
			
		||||
    osx
 | 
			
		||||
    homebrew
 | 
			
		||||
    zsh
 | 
			
		||||
    vim
 | 
			
		||||
    gamedev:sfml
 | 
			
		||||
    gamedev:love2D
 | 
			
		||||
    gamedev:unity
 | 
			
		||||
    rbenv
 | 
			
		||||
    pyenv
 | 
			
		||||
}.each { |task| Rake::Task[task].invoke }
 | 
			
		||||
 | 
			
		||||
%w{
 | 
			
		||||
    evernote
 | 
			
		||||
    transmit
 | 
			
		||||
    transmission
 | 
			
		||||
    vlc
 | 
			
		||||
    flux
 | 
			
		||||
    skype
 | 
			
		||||
    adium
 | 
			
		||||
    codekit
 | 
			
		||||
    mongohub
 | 
			
		||||
    sequel-pro
 | 
			
		||||
    scrivener
 | 
			
		||||
    omnigraffle
 | 
			
		||||
    mindnode-pro
 | 
			
		||||
}.each { |app| Homebrew.install_cask app }
 | 
			
		||||
							
								
								
									
										0
									
								
								rake/node/test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								rake/node/test.rb
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								rake/node/titan.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								rake/node/titan.rb
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										47
									
								
								rake/osx.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								rake/osx.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
 | 
			
		||||
require_relative 'lib/output'
 | 
			
		||||
 | 
			
		||||
task :osx do
 | 
			
		||||
    echo "Applying OSX settings"
 | 
			
		||||
    sh 'chflags nohidden "${HOME}/Library"'
 | 
			
		||||
    sh 'defaults write NSGlobalDomain KeyRepeat -int 0'
 | 
			
		||||
 | 
			
		||||
    # Disable press-and-hold for keys in favor of key repeat
 | 
			
		||||
    sh 'defaults write ApplePressAndHoldEnabled -bool false'
 | 
			
		||||
 | 
			
		||||
    sh 'defaults write NSGlobalDomain AppleKeyboardUIMode -int 3'
 | 
			
		||||
    sh 'defaults write NSGlobalDomain AppleFontSmoothing -int 2'
 | 
			
		||||
    sh 'defaults write com.apple.dock autohide -bool true'
 | 
			
		||||
    sh 'defaults write NSGlobalDomain AppleShowAllExtensions -bool true'
 | 
			
		||||
    sh 'defaults write com.apple.finder ShowStatusBar -bool true'
 | 
			
		||||
    sh 'defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true'
 | 
			
		||||
 | 
			
		||||
    # Disable app quarantine
 | 
			
		||||
    sh 'defaults write com.apple.LaunchServices LSQuarantine -bool false'
 | 
			
		||||
 | 
			
		||||
    # Disable auto-correct
 | 
			
		||||
    sh 'defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false'
 | 
			
		||||
 | 
			
		||||
    sh 'defaults write com.apple.finder _FXShowPosixPathInTitle -bool true'
 | 
			
		||||
    # Avoid creating .DS_Store files on network volumes
 | 
			
		||||
    sh 'defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true'
 | 
			
		||||
    # Disable the warning when changing a file extension
 | 
			
		||||
    sh 'defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false'
 | 
			
		||||
 | 
			
		||||
    sh 'defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true'
 | 
			
		||||
 | 
			
		||||
    # Disable local Time Machine backups
 | 
			
		||||
    # sh 'hash tmutil &> /dev/null && sudo tmutil disablelocal'
 | 
			
		||||
 | 
			
		||||
    # Finder: allow text selection in Quick Look
 | 
			
		||||
    sh 'defaults write com.apple.finder QLEnableTextSelection -bool true'
 | 
			
		||||
 | 
			
		||||
    # When performing a search, search the current folder by default
 | 
			
		||||
    sh 'defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"'
 | 
			
		||||
 | 
			
		||||
    # Use column view
 | 
			
		||||
    sh 'defaults write com.apple.finder FXPreferredViewStyle -string "clmv"'
 | 
			
		||||
 | 
			
		||||
    sh 'killall Finder'
 | 
			
		||||
    sh 'killall Dock'
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										0
									
								
								rake/pyenv.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								rake/pyenv.rake
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										27
									
								
								rake/rbenv.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								rake/rbenv.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
 | 
			
		||||
require_relative 'lib/homebrew'
 | 
			
		||||
 | 
			
		||||
task :rbenv do
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
namespace :rbenv do
 | 
			
		||||
 | 
			
		||||
    BREWS = %w{rbenv ruby-build rbenv-bundler rbenv-vars rbenv-gem-rehash}
 | 
			
		||||
 | 
			
		||||
    task :install do
 | 
			
		||||
        BREWS.each { |pkg| Homebrew.install pkg }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if Dir.exists?(File.expand_path("~/.rbenv"))
 | 
			
		||||
        task :remove do
 | 
			
		||||
            BREWS.each { |pkg| Homebrew.remove pkg }
 | 
			
		||||
            sh "rm -rf ~/.rbenv"
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        task :update => :install do
 | 
			
		||||
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										28
									
								
								rake/vim.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								rake/vim.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
 | 
			
		||||
require_relative "lib/output"
 | 
			
		||||
require_relative "lib/homebrew"
 | 
			
		||||
 | 
			
		||||
desc "Ensure vim/macvim is installed and up to date"
 | 
			
		||||
task :vim => 'vim:update'
 | 
			
		||||
 | 
			
		||||
namespace :vim do
 | 
			
		||||
 | 
			
		||||
    task :install => 'homebrew' do
 | 
			
		||||
        %w{lua luajit}.each { |pkg| Homebrew.install pkg }
 | 
			
		||||
        %w{vim macvim}.each { |pkg| Homebrew.install(pkg, '--with-lua --with-luajit') }
 | 
			
		||||
 | 
			
		||||
        github 'hlissner/vim', '~/.vim'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    task :update => :install do
 | 
			
		||||
        echo "Updating homebrew..."
 | 
			
		||||
        Homebrew.update
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    desc "Remove homebrew cleanly"
 | 
			
		||||
    task :remove do 
 | 
			
		||||
        echo "Uninstalling Homebrew"
 | 
			
		||||
        Homebrew.destroy
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										28
									
								
								rake/zsh.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								rake/zsh.rake
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
 | 
			
		||||
require_relative 'lib/git'
 | 
			
		||||
 | 
			
		||||
desc "Ensure zsh and oh-my-zsh is installed and set"
 | 
			
		||||
task :zsh => 'zsh:update'
 | 
			
		||||
 | 
			
		||||
namespace :zsh do
 | 
			
		||||
 | 
			
		||||
    task :install do
 | 
			
		||||
        unless Dir.exists?(File.expand_path("~/.oh-my-zsh"))
 | 
			
		||||
            echo "Installing oh-my-zsh"
 | 
			
		||||
            github 'robbyrussell/oh-my-zsh', '~/.oh-my-zsh'
 | 
			
		||||
            sh '~/.oh-my-zsh/install.sh'
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        unless `printenv SHELL | grep "/bin/zsh"`
 | 
			
		||||
            echo "Setting shell to zsh"
 | 
			
		||||
            sh "chsh -s /bin/zsh"
 | 
			
		||||
            sh "exec /bin/zsh -l"
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    task :update => :install do
 | 
			
		||||
        echo "Updating oh-my-zsh"
 | 
			
		||||
        sh 'cd ~/.oh-my-zsh && git pull'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in a new issue