Skip to content

Instantly share code, notes, and snippets.

@soh335
Created April 17, 2010 07:41
Show Gist options
  • Save soh335/369383 to your computer and use it in GitHub Desktop.
Save soh335/369383 to your computer and use it in GitHub Desktop.
require 'rake'
HOME = ENV["HOME"]
CURRENT = Dir.pwd
exclude_pattern = /\.$|\.sw.$|.DS_Store|\.svn|\.git$/
_requires = [
'.gvimrc',
'.screenrc',
'.vimperatorrc',
'.vimrc',
'.zshrc',
'.vim',
]
requires = FileList.new
_requires.each do |file|
dest = File.join(HOME, file)
next unless File.exists?dest
if dest && File.ftype(dest) == 'directory'
requires += Dir.glob(File.join(HOME, file, '**', '*')).map { |p| p.sub(/#{HOME}\//, '') }
else
requires.include(file)
end
end
requires.exclude(exclude_pattern)
task :import => requires
requires.each do |name|
file name do
if File.ftype(File.join(HOME, name)) == 'directory'
mkdir_p File.join(CURRENT, name), {:verbose => true}
else
install File.join(HOME, name), File.join(CURRENT, name), {:verbose => true}
end
end
end
task :export do
dotfiles = FileList[".*"]
dotfiles.exclude(exclude_pattern)
dotfiles.each do |file|
symlink File.join(CURRENT, file), File.join(HOME, file), {:verbose => true}
end
end
task :delete do
dotfiles = FileList[".*"]
dotfiles.exclude(exclude_pattern)
dotfiles.each do |file|
if File.exist? File.join(HOME, file)
rm_r File.join(HOME, file), {:force => true, :verbose => true}
end
end
end
task :force_export => [:delete, :export]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment