-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
133 lines (126 loc) · 3.31 KB
/
Rakefile
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
require 'rake'
require 'erb'
desc "install the dot files into user's home directory"
task :install do
install_oh_my_zsh
switch_to_zsh
install_tmux
install_vim
replace_all = false
files = Dir['*'] - %w[Rakefile README.md LICENSE oh-my-zsh]
files << "oh-my-zsh/custom/plugins/bortevik"
files << "oh-my-zsh/custom/bortevik.zsh-theme"
files.each do |file|
system %Q{mkdir -p "$HOME/.#{File.dirname(file)}"} if 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
elsif file =~ /zshrc$/ # copy zshrc instead of link
puts "copying ~/.#{file}"
system %Q{cp "$PWD/#{file}" "$HOME/.#{file}"}
else
puts "linking ~/.#{file}"
system %Q{ln -s "$PWD/#{file}" "$HOME/.#{file}"}
end
end
def switch_to_zsh
if ENV["SHELL"] =~ /zsh/
puts "using zsh"
else
print "switch to zsh? (recommended) [ynq] "
case $stdin.gets.chomp
when 'y'
puts "switching to zsh"
system %Q{chsh -s `which zsh`}
when 'q'
exit
else
puts "skipping zsh"
end
end
end
def install_oh_my_zsh
if File.exist?(File.join(ENV['HOME'], ".oh-my-zsh"))
puts "found ~/.oh-my-zsh"
else
print "install oh-my-zsh? [ynq] "
case $stdin.gets.chomp
when 'y'
puts "installing oh-my-zsh"
system %Q{git clone https://github.com/robbyrussell/oh-my-zsh.git "$HOME/.oh-my-zsh"}
when 'q'
exit
else
puts "skipping oh-my-zsh, you will need to change ~/.zshrc"
end
end
end
def install_tmux
if File.exist?(File.join(ENV['HOME'], ".tmux"))
puts "found ~/.tmux"
else
print "install tmux? [ynq] "
case $stdin.gets.chomp
when 'y'
puts "installing tmux"
if system %Q{git clone git://github.com/nviennot/tmux-config.git "$HOME/.tmux"}
Dir.chdir(File.join(ENV['HOME'], ".tmux")) do
system %Q{ make install }
end
puts 'Tmux installed' if $?.success?
end
when 'q'
exit
else
puts "skipping tmux"
end
end
end
def install_vim
if File.exist?(File.join(ENV['HOME'], ".vim/bundle/vundle"))
puts "found ~/.vim"
else
print "install vim? [ynq] "
case $stdin.gets.chomp
when 'y'
puts "installing vim"
system %Q{git clone https://github.com/gmarik/vundle.git "$HOME/.vim/bundle/vundle"}
Dir.mkdir(File.join(ENV['HOME'], '.vim/.undo'), 0755)
when 'q'
exit
else
puts "skipping vim"
end
end
end