From 669bf5aa6f81e0cd1d1956bee6ed26715fb896fa Mon Sep 17 00:00:00 2001 From: elijah Date: Sat, 27 Oct 2012 15:56:48 -0700 Subject: auto run 'git submodule update --init' on leap platform if needed --- leap_cli.gemspec | 2 +- lib/leap_cli/commands/deploy.rb | 18 ++++++++++++++++++ lib/leap_cli/util.rb | 10 +++++++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/leap_cli.gemspec b/leap_cli.gemspec index 0368e6e..ecabe45 100644 --- a/leap_cli.gemspec +++ b/leap_cli.gemspec @@ -53,7 +53,7 @@ spec = Gem::Specification.new do |s| #s.add_runtime_dependency('supply_drop') # misc gems - s.add_runtime_dependency('ya2yaml') # pure ruby yaml, so we can better control output. + s.add_runtime_dependency('ya2yaml') # pure ruby yaml, so we can better control output. see https://github.com/afunai/ya2yaml s.add_runtime_dependency('json_pure') # pure ruby json, so we can better control output. s.add_runtime_dependency('gpgme') # not essential, but used for some minor stuff in adding sysadmins diff --git a/lib/leap_cli/commands/deploy.rb b/lib/leap_cli/commands/deploy.rb index 8febe4d..31ae053 100644 --- a/lib/leap_cli/commands/deploy.rb +++ b/lib/leap_cli/commands/deploy.rb @@ -6,6 +6,8 @@ module LeapCli arg_name '' command :deploy do |c| c.action do |global_options,options,args| + init_submodules + nodes = manager.filter!(args) if nodes.size > 1 say "Deploying to these nodes: #{nodes.keys.join(', ')}" @@ -13,6 +15,7 @@ module LeapCli quit! "OK. Bye." end end + ssh_connect(nodes) do |ssh| # directory setup ssh.leap.mkdir("/etc/leap") @@ -46,5 +49,20 @@ module LeapCli end end + private + + def init_submodules + Dir.chdir Path.platform do + statuses = assert_run! "git submodule status" + statuses.strip.split("\n").each do |status_line| + if status_line =~ /^-/ + submodule = status_line.split(' ')[1] + progress "Updating submodule #{submodule}" + assert_run! "git submodule update --init #{submodule}" + end + end + end + end + end end \ No newline at end of file diff --git a/lib/leap_cli/util.rb b/lib/leap_cli/util.rb index fdbdc8a..3b0c334 100644 --- a/lib/leap_cli/util.rb +++ b/lib/leap_cli/util.rb @@ -55,11 +55,15 @@ module LeapCli # assert that the command is run without an error. # if successful, return output. # - def assert_run!(cmd, message) - log2(" * run: #{cmd}") + def assert_run!(cmd, message=nil) cmd = cmd + " 2>&1" output = `#{cmd}` - assert!($?.success?, message) + unless $?.success? + log1(" * run: #{cmd}") + log1(" * FAILED: (exit #{$?}) #{output}") + else + log2(" * run: #{cmd}") + end return output end -- cgit v1.2.3