forked from ryanb/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
134 lines (116 loc) · 3.19 KB
/
Rakefile
File metadata and controls
134 lines (116 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
require 'rake'
require 'erb'
desc "Install dot files and dependencies"
task :install => [:intro, :osx, :brew_packages, :zsh, :fonts, :slate, :misc, :vim, :outro]
task :intro do
puts ""
puts "=============================="
puts "Beginning installation of dotfiles and dependencies"
end
task :outro do
puts ""
puts "Completed installation of dotfiles and dependencies"
puts "=============================="
puts ""
end
task :osx do
msg "Setting up sane defaults for the OSX environment"
`./osx`
end
task :fonts do
msg "Consider changing your terminal font to 'Source Code Pro for Powerline'"
sh "cp fonts/*.otf ~/Library/Fonts/."
end
task :brew_packages do
if not File.exists? "/usr/local/bin/brew"
msg "Installing homebrew"
sh "ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
end
msg "Update homebrew and formulae"
sh "brew update"
['ack', 'git', 'ctags', 'fasd', 'acvim',
'zsh', 'tmux', 'reattach-to-user-namespace',
'macvim --override-system-vim', 'zsh-completions'].each do |pkg|
msg "Installing #{pkg}"
begin
sh "brew install #{pkg}"
rescue => e
puts "Looks like #{pkg} is already installed"
end
sh "brew linkapps"
end
end
task :zsh do
msg "Installing zsh configuration"
install_dotfiles('zsh*')
`chsh -s /bin/zsh`
end
task :slate do
msg "Installing slate"
unless File.exist?("/Applications/Slate.app")
sh "cd /Applications && curl http://www.ninjamonkeysoftware.com/slate/versions/slate-latest.tar.gz | tar -xz"
end
install_dotfiles('slate*')
sh "open /Applications/Slate.app"
end
task :misc do
%w(ackrc aprc editrc inputrc irbrc gemrc gitconfig.erb pryrc).each do |f|
msg "Installing #{f}"
install_dotfiles(f)
end
end
task :vim do
msg "Installing vim configuration"
install_dotfiles('vim')
sh "rm -rf ~/.vim/bundle/vundle"
sh "git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle"
install_dotfiles('vimrc')
sh "vim +BundleClean +qall"
sh "vim +BundleInstall +qall"
end
def msg(m)
puts ""
puts "+++ #{m}"
end
def install_dotfiles(dir_pattern)
replace_all = false
Dir[dir_pattern].each do |file|
if File.exist?(File.join(ENV['HOME'], ".#{file.sub('.erb', '')}"))
if File.identical? file, File.join(ENV['HOME'], ".#{file.sub('.erb', '')}")
puts "identical ~/.#{file.sub('.erb', '')}"
elsif replace_all
replace_file(file)
else
print "overwrite ~/.#{file.sub('.erb', '')}? [ynaq] "
case $stdin.gets.chomp
when 'a'
replace_all = true
replace_file(file)
when 'y'
replace_file(file)
when 'q'
exit
else
puts "skipping ~/.#{file.sub('.erb', '')}"
end
end
else
link_file(file)
end
end
end
def replace_file(file)
system %Q{rm -rf "$HOME/.#{file.sub('.erb', '')}"}
link_file(file)
end
def link_file(file)
if file =~ /.erb$/
puts "generating ~/.#{file.sub('.erb', '')}"
File.open(File.join(ENV['HOME'], ".#{file.sub('.erb', '')}"), 'w') do |new_file|
new_file.write ERB.new(File.read(file)).result(binding)
end
else
puts "linking ~/.#{file}"
system %Q{ln -s "$PWD/#{file}" "$HOME/.#{file}"}
end
end