Implemented update action for castle

This commit is contained in:
Jorge Dias
2010-04-09 19:02:43 +02:00
parent e1901b3a83
commit 95d22951b3
2 changed files with 25 additions and 6 deletions

View File

@@ -44,13 +44,20 @@ class Homesick < Thor
end end
end end
desc "update NAME", "Update the specified castle"
def update(name)
check_castle_existance(name, "update")
inside repos_dir.join(name) do
git_pull
git_submodule_init
git_submodule_update
end
end
desc "symlink NAME", "Symlinks all dotfiles from the specified castle" desc "symlink NAME", "Symlinks all dotfiles from the specified castle"
def symlink(name) def symlink(name)
unless castle_dir(name).exist? check_castle_existance(name, "symlink")
say_status :error, "Could not symlink #{name}, expected #{castle_dir(name)} exist and contain dotfiles", :red
exit(1)
end
inside castle_dir(name) do inside castle_dir(name) do
files = Pathname.glob('.*').reject{|a| [".",".."].include?(a.to_s)} files = Pathname.glob('.*').reject{|a| [".",".."].include?(a.to_s)}
@@ -85,9 +92,16 @@ class Homesick < Thor
@repos_dir ||= home_dir.join('.homesick', 'repos').expand_path @repos_dir ||= home_dir.join('.homesick', 'repos').expand_path
end end
def castle_dir(name) def castle_dir(name)
repos_dir.join(name, 'home') repos_dir.join(name, 'home')
end end
def check_castle_existance(name, action)
unless castle_dir(name).exist?
say_status :error, "Could not #{action} #{name}, expected #{castle_dir(name)} exist and contain dotfiles", :red
exit(1)
end
end
end end

View File

@@ -29,6 +29,11 @@ class Homesick
system "git submodule --quiet update >/dev/null 2>&1" unless options[:pretend] system "git submodule --quiet update >/dev/null 2>&1" unless options[:pretend]
end end
def git_pull(config = {})
say_status 'git pull', '', :green unless options[:quiet]
system "git pull --quiet" unless options[:pretend]
end
def ln_s(source, destination, config = {}) def ln_s(source, destination, config = {})
source = Pathname.new(source) source = Pathname.new(source)
destination = Pathname.new(destination) destination = Pathname.new(destination)