mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:46:41 +00:00
Merge branch 'install.sh' into dotfiles
This commit is contained in:
10
Gemfile.lock
10
Gemfile.lock
@@ -1,10 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: http://rubygems.org/
|
|
||||||
specs:
|
|
||||||
rake (0.9.2.2)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
rake
|
|
||||||
87
Rakefile
87
Rakefile
@@ -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
|
|
||||||
129
install.sh
Executable file
129
install.sh
Executable file
@@ -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
|
||||||
2
private
2
private
Submodule private updated: f2c2d3e55f...b1a1019040
Reference in New Issue
Block a user