Add simple Prezto installation

This commit is contained in:
Jean Mertz
2012-08-09 20:47:45 +02:00
parent 6b98421fe1
commit 2410bf220b
3 changed files with 54 additions and 187 deletions

100
Rakefile
View File

@@ -9,56 +9,18 @@ task :install => [:submodules] do
puts "be overwritten without your consent."
puts "======================================================"
puts
# this has all the linkables from this directory.
linkables = []
linkables += Dir.glob('git/*') if want_to_install?('git')
linkables += Dir.glob('irb/*') if want_to_install?('irb/pry')
linkables += Dir.glob('ruby/*') if want_to_install?('ruby (gems)')
linkables += Dir.glob('ctags/*') if want_to_install?('ctags config (better js/ruby support)')
linkables += Dir.glob('vimify/*') if want_to_install?('vimification of mysql/irb/command line')
linkables += Dir.glob('{vim,vimrc}') if want_to_install?('vim')
linkables += Dir.glob('zsh/zshrc') if want_to_install?('zsh')
Rake::Task['zsh_themes'].invoke
# this has all the runcoms from this directory.
file_operation(Dir.glob('git/*')) if want_to_install?('git')
file_operation(Dir.glob('irb/*')) if want_to_install?('irb/pry')
file_operation(Dir.glob('ruby/*')) if want_to_install?('ruby (gems)')
file_operation(Dir.glob('ctags/*')) if want_to_install?('ctags config (better js/ruby support)')
file_operation(Dir.glob('vimify/*')) if want_to_install?('vimification of mysql/irb/command line')
file_operation(Dir.glob('{vim,vimrc}')) if want_to_install?('vim')
file_operation(Dir.glob('zsh/prezto/runcoms/z*'), :copy)
skip_all = false
overwrite_all = false
backup_all = false
linkables.each do |linkable|
file = linkable.split('/').last
source = "#{ENV["PWD"]}/#{linkable}"
target = "#{ENV["HOME"]}/.#{file}"
puts "--------"
puts "file: #{file}"
puts "source: #{source}"
puts "target: #{target}"
if File.exists?(target) || File.symlink?(target)
unless skip_all || overwrite_all || backup_all
puts "File already exists: #{target}, what do you want to do? [s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup, [B]ackup all"
case STDIN.gets.chomp
when 'o' then overwrite = true
when 'b' then backup = true
when 'O' then overwrite_all = true
when 'B' then backup_all = true
when 'S' then skip_all = true
end
end
FileUtils.rm_rf(target) if overwrite || overwrite_all
run %{ mv "$HOME/.#{file}" "$HOME/.#{file}.backup" } if backup || backup_all
end
run %{ ln -s "#{source}" "#{target}" }
end
success_msg("installed")
end
task :zsh_themes do
if File.exist?("#{ENV['HOME']}/.oh-my-zsh/modules/prompt/functions")
run %{ ln -nfs #{ENV["PWD"]}/oh-my-zsh/modules/prompt/functions/* $HOME/.oh-my-zsh/modules/prompt/functions/ } if want_to_install?('zsh themes')
end
end
desc "Init and update submodules."
task :submodules do
sh('git submodule update --init')
@@ -79,6 +41,52 @@ def want_to_install? (section)
STDIN.gets.chomp == 'y'
end
def file_operation(files, method = :symlink)
skip_all = false
overwrite_all = false
backup_all = false
files.each do |f|
file = f.split('/').last
source = "#{ENV["PWD"]}/#{f}"
target = "#{ENV["HOME"]}/.#{file}"
puts "--------"
puts "file: #{file}"
puts "source: #{source}"
puts "target: #{target}"
if File.exists?(target) || File.symlink?(target)
unless skip_all || overwrite_all || backup_all
puts "File already exists: #{target}, what do you want to do? [s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup, [B]ackup all"
case STDIN.gets.chomp
when 'o' then overwrite = true
when 'b' then backup = true
when 'O' then overwrite_all = true
when 'B' then backup_all = true
when 'S' then skip_all = true
end
end
FileUtils.rm_rf(target) if overwrite || overwrite_all
run %{ mv "$HOME/.#{file}" "$HOME/.#{file}.backup" } if backup || backup_all
end
if method == :symlink
run %{ ln -s "#{source}" "#{target}" }
else
run %{ cp -f "#{source}" "#{target}" }
end
# Temporary solution until we find a way to allow customization
if file == 'zshrc'
run %{ ln -s "~/.yadr/zsh/prezto" "$HOME/.oh-my-zsh" }
File.open(target, 'a') do |f|
f.write('for config_file (~/.yadr/zsh/*.zsh) source $config_file')
end
end
end
end
def success_msg(action)
puts ""
puts " _ _ _ "