74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require 'rake'
 | 
						|
 | 
						|
desc "install the dot files into user's home directory"
 | 
						|
task :install do
 | 
						|
  replace_all = false
 | 
						|
  # link dotfiles first
 | 
						|
  create_dotfile_link
 | 
						|
 | 
						|
  Dir['*'].each do |file|
 | 
						|
    next if %w[Rakefile README notes fonts iterm id_dsa.pub .git .gitignore gitignore].include? file
 | 
						|
 | 
						|
    if File.exist?(File.join(ENV['HOME'], ".#{file}"))
 | 
						|
      if replace_all
 | 
						|
        replace_file(file)
 | 
						|
      else
 | 
						|
        print "overwrite ~/.#{file}? [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}"
 | 
						|
        end
 | 
						|
      end
 | 
						|
    else
 | 
						|
      link_to_dotfile file
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  setup_some_folder "Where are your personal files?", "~/.personal-files"
 | 
						|
  setup_some_folder "Where are your work files?", "~/.work-files"
 | 
						|
  setup_temp_folder
 | 
						|
  setup_work_aliases
 | 
						|
 | 
						|
  puts "Setup is nearly complete. The last step is to run `git submodule update --init`"
 | 
						|
end
 | 
						|
 | 
						|
def create_dotfile_link
 | 
						|
  system %Q{rm -f "$HOME/.dotfiles"}
 | 
						|
  system %Q{ln -s $PWD "$HOME/.dotfiles"}
 | 
						|
end
 | 
						|
 | 
						|
def replace_file(file)
 | 
						|
  system %Q{rm -r "$HOME/.#{file}"}
 | 
						|
  link_to_dotfile file
 | 
						|
end
 | 
						|
 | 
						|
def link_to_dotfile(file)
 | 
						|
  link_file "$HOME/.dotfiles/#{file}", "$HOME/.#{file}"
 | 
						|
end
 | 
						|
 | 
						|
def link_file(source, dest)
 | 
						|
  puts "linking #{source} to #{dest}"
 | 
						|
  system %Q{ln -s #{source} #{dest}}
 | 
						|
end
 | 
						|
 | 
						|
def setup_some_folder(msg, file_name)
 | 
						|
  puts msg
 | 
						|
  dir = $stdin.gets.chomp
 | 
						|
  link_file dir, file_name
 | 
						|
end
 | 
						|
 | 
						|
def setup_temp_folder
 | 
						|
  system %Q{mkdir -p ~/.tmp}
 | 
						|
end
 | 
						|
 | 
						|
def setup_work_aliases
 | 
						|
  system %Q{touch ~/.work-aliases}
 | 
						|
end
 |