diff options
-rw-r--r-- | leap_cli.gemspec | 2 | ||||
-rw-r--r-- | lib/leap_cli/commands/deploy.rb | 18 | ||||
-rw-r--r-- | 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 '<node filter>' 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 |