diff --git a/lib/homesick.rb b/lib/homesick.rb index fb82908..87a1982 100644 --- a/lib/homesick.rb +++ b/lib/homesick.rb @@ -44,13 +44,20 @@ class Homesick < Thor 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" def symlink(name) - unless castle_dir(name).exist? - say_status :error, "Could not symlink #{name}, expected #{castle_dir(name)} exist and contain dotfiles", :red - - exit(1) - end + check_castle_existance(name, "symlink") inside castle_dir(name) do 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 end - def castle_dir(name) repos_dir.join(name, 'home') 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 diff --git a/lib/homesick/actions.rb b/lib/homesick/actions.rb index e92e688..4041ae7 100644 --- a/lib/homesick/actions.rb +++ b/lib/homesick/actions.rb @@ -29,6 +29,11 @@ class Homesick system "git submodule --quiet update >/dev/null 2>&1" unless options[:pretend] 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 = {}) source = Pathname.new(source) destination = Pathname.new(destination)