diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/leap_cli/commands/deploy.rb | 18 | ||||
-rw-r--r-- | lib/leap_cli/util.rb | 10 |
2 files changed, 25 insertions, 3 deletions
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 |