diff --git a/Gemfile b/Gemfile deleted file mode 100644 index b3d4bf6..0000000 --- a/Gemfile +++ /dev/null @@ -1,3 +0,0 @@ -source 'http://rubygems.org/' - -gem 'rake' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 3b9cde2..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,10 +0,0 @@ -GEM - remote: http://rubygems.org/ - specs: - rake (0.9.2.2) - -PLATFORMS - ruby - -DEPENDENCIES - rake diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 0a9f889..0000000 --- a/Rakefile +++ /dev/null @@ -1,87 +0,0 @@ -# encoding: utf-8 - -$HOME = File.expand_path(ENV['HOME'] || '~') -$DOTFILES = File.expand_path('..', __FILE__) -$DOTPFILES = "#{$DOTFILES}/private" - -desc "Create all symlinks in home folder (#{$HOME})" -task :symlink => 'symlink:all' -task :link => 'symlink:all' - -namespace :symlink do - - # Paths to symlink from dotfiles - paths = [ - 'bundle', 'emacs.d', 'erlang', 'gemrc', 'gitconfig', 'gitignore', - 'hgrc', 'irbrc', 'powconfig', 'rspec', 'tmux.conf' - ] - - # Target directory to put symlinks in (defaults to home folder). - target = File.expand_path(ENV["TARGET"] ? ENV["TARGET"] : $HOME) - - task :dotfiles do - link_paths($DOTFILES, "#{target}/.dotfiles") - end - - desc "Execute \"rake symlink\" in #{$DOTPFILES}" - task :private do - system "rake --rakefile=\"#{$DOTPFILES}/Rakefile\" symlink" - end - - task :all => ["symlink:private", "symlink:paths", "symlink:shell_loaders"] - - task :paths => :dotfiles do - paths.each do |path| - link_paths(".dotfiles/#{path}", "#{target}/.#{path}") - end - end - - task :shell_loaders => :dotfiles do - link_paths(".dotfiles/load_shellrc.sh", "#{target}/.profile") - link_paths(".dotfiles/load_shellrc.sh", "#{target}/.zprofile") - end -end - -namespace :install do - desc "Install Homebrew" - task :homebrew do - system '/usr/bin/ruby -e ' + - '"$(curl -fsSL https://raw.github.com/gist/323731)"' - end - - desc "Install rbenv to #{$HOME}/.rbenv" - task :rbenv do - target = File.join($HOME, '.rbenv') - git_clone('git://github.com/sstephenson/rbenv.git', target) - end - - desc "Install nvm to #{$HOME}/.nvm" - task :nvm do - target = File.join($HOME, '.nvm') - git_clone('https://github.com/creationix/nvm.git', target) - end - - desc "Install virtualenv-burrito" - task :virtualenv do - system 'curl -s https://raw.github.com/brainsik/virtualenv-burrito/' + - 'master/virtualenv-burrito.sh | bash' - end -end - - -def link_paths(src, to) - if !File.exists?(to) - puts " symlink: #{to} --> #{src}" - File.symlink(src, to) - else - puts " exists: #{to}" - end -end - -def git_clone(repo, target) - if File.exist?(target) - puts "#{target} already exists." - else - system "git clone \"#{repo}\" \"#{target}\"" - end -end diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..932ba30 --- /dev/null +++ b/install.sh @@ -0,0 +1,129 @@ +#! /usr/bin/env bash + +# +# Configuration +# + +TARGET="$HOME" +DOTFILES_LINK=".dotfiles" +SYMLINK_PATH="$DOTFILES_LINK" +PRIVATE_PATH="private" +SYMLINKS=(bundle emacs.d erlang gemrc gitconfig gitignore hgrc irbrc \ + powconfig rspec tmux.conf) +LOAD_FILES=(profile zprofile) + +# +# Main Functions +# + +install_symlinks () { + # Symlink dotfiles root + symlink "$ROOT_PATH" "$TARGET/$DOTFILES_LINK" + + # Setup private dotfiles + if [ -f "$ROOT_PATH/$PRIVATE_PATH/install.sh" ]; then + "$ROOT_PATH/$PRIVATE_PATH/install.sh" links + fi + + # Symlink each path + for i in ${SYMLINKS[@]}; do + symlink "$SYMLINK_PATH/$i" "$TARGET/.$i" + done + + # Symlink shell init file for bash and zsh + for i in ${LOAD_FILES[@]}; do + symlink "$DOTFILES_LINK/load_shellrc.sh" "$TARGET/.$i" + done +} + +install_homebrew () { + /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)" +} + +install_rbenv () { + git_clone 'git://github.com/sstephenson/rbenv.git' "$TARGET/.rbenv" +} + +isntall_nvm () { + git_clone 'https://github.com/creationix/nvm.git' "$TARGET/.nvm" +} + +install_virtualenv () { + curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash +} + + +# +# Initial Setup +# + +if [ -n "${BASH_SOURCE[0]}" ] && [ -f "${BASH_SOURCE[0]}" ] ; then + ROOT_PATH=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +elif [ -n "$0" ] && [ -f "$0" ]; then + ROOT_PATH=$(cd "$(dirname "$0")" && pwd) +else + echo "[ERROR] Can't determine dotfiles' root path." + exit 1 +fi + + +# +# Helper functions +# + +symlink() { + if [ ! -e "$2" ]; then + echo " symlink: $2 --> $1" + ln -s "$1" "$2" + else + echo " exists: $2" + fi +} + +git_clone () { + if [ ! -e "$2" ]; then + git clone "$1" "$2" + else + echo "[ERROR] $2 already exists" + fi +} + + +# +# Argument Handling +# + +case "$1" in + symlinks|links) + install_symlinks + ;; + homebrew|brew) + install_homebrew + ;; + rbenv) + install_rbenv + ;; + nvm) + install_nvm + ;; + virtualenv|venv) + install_virtualenv + ;; + info) + echo "Target directory: $TARGET" + echo "Detected dotfiles root: $ROOT_PATH" + ;; + *) + echo 'usage: ./install.sh [command]' + echo '' + echo 'Available commands:' + echo ' info: Target and source directory info.' + echo ' symlinks: Install symlinks for various dotfiles into' \ + 'target directory.' + echo ' homebrew: Install Homebrew (Mac OS X only).' + echo ' rbenv: Install rbenv, a Ruby version manager.' + echo ' nvm: Install nvm, a Node.js version manager.' + echo ' virtualenv: Install virtualenv-burrito, a Python version and' \ + 'environment manager.' + ;; +esac diff --git a/private b/private index f2c2d3e..b1a1019 160000 --- a/private +++ b/private @@ -1 +1 @@ -Subproject commit f2c2d3e55fb1588d529fd7650bd625fea7a774a2 +Subproject commit b1a10190408a8e35123ee834c2e3b2f680e2eff6