-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rakefile
129 lines (117 loc) · 2.85 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
require 'rake'
require 'erb'
task :default => :install
@replace_all = false
desc "install the dot files into user's home directory"
task :install do
install_oh_my_zsh
switch_to_zsh
install_maximum_awesome
# install_misc
special_files = %w[Rakefile README.rdoc LICENSE oh-my-zsh]
directories = Dir["*"].reject{|o| not File.directory?(o)} - special_files
files = Dir["*"] - directories - special_files
handle_files(files)
end
def target_file (file)
File.join(ENV['HOME'], ".#{file.sub(/\.erb$/, '')}")
end
def handle_files(files)
files.each do |file|
# system %Q{mkdir -p "$HOME/.#{File.dirname(file)}"} if file =~ /\//
if File.exist?(target_file file)
if File.identical?(file, target_file(file))
puts "identical #{target_file file}"
elsif@replace_all
replace_file(file)
else
print "overwrite #{target_file file}? [ynaq] "
case $stdin.gets.chomp
when 'a'
replace_file(file)
when 'y'
replace_file(file)
when 'q'
exit
else
puts "skipping #{target_file file}"
end
end
else
link_file(file)
end
end
end
def replace_file(file)
system %Q{rm -rf #{target_file file}}
link_file(file)
end
def link_file(file)
if file =~ /.erb$/
puts "generating ~/#{file.sub(/\.erb$/, '')}"
File.open(target_file file, '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}" #{target_file 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_maximum_awesome
if File.exist?(File.join(ENV['HOME'], ".maximum-awesome"))
puts "found ~/.maximum-awesome"
else
print "install .maximum-awesome? [ynq] "
case $stdin.gets.chomp
when 'y'
puts "installing maximum-awesome"
system %Q{git clone https://github.com/square/maximum-awesome.git "$HOME/.maximum-awesome"}
system %Q{cd $HOME/.maximum-awesome && rake }
when 'q'
exit
else
puts "skipping maximum-awesome"
end
end
end
def install_misc
# puts "copying snippets"
# files = Dir["vim-snippets/*"]
# files.each do |file|
# puts "linking #{file}"
# system %Q{rm -rf "$HOME/.vim/snippets/#{File.basename(file)}"}
# system %Q{ln -s "$PWD/#{file}" "$HOME/.vim/snippets/#{File.basename(file)}"}
# end
end