summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--leap_cli.gemspec2
-rw-r--r--lib/leap_cli/commands/deploy.rb18
-rw-r--r--lib/leap_cli/util.rb10
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