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'
 | 
					source 'https://rubygems.org'
 | 
				
			||||||
gem 'prowl'
 | 
					 | 
				
			||||||
gem 'simple-rss'
 | 
					gem 'simple-rss'
 | 
				
			||||||
gem 'ruby-growl'
 | 
					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