diff --git a/lib/mrsk/cli/build.rb b/lib/mrsk/cli/build.rb index f4418b28..1a64a9c5 100644 --- a/lib/mrsk/cli/build.rb +++ b/lib/mrsk/cli/build.rb @@ -10,15 +10,18 @@ class Mrsk::Cli::Build < Mrsk::Cli::Base desc "push", "Build locally and push app image to registry" def push verbose = options[:verbose] + cli = self run_locally do begin MRSK.verbosity(:debug) { execute *MRSK.builder.push } rescue SSHKit::Command::Failed => e - if e.message =~ /no such file or directory/ + if e.message =~ /(no builder)|(no such file or directory)/ error "Missing compatible builder, so creating a new one first" - execute *MRSK.builder.create - MRSK.verbosity(:debug) { execute *MRSK.builder.push } + + if cli.create + MRSK.verbosity(:debug) { execute *MRSK.builder.push } + end else raise end @@ -34,8 +37,17 @@ class Mrsk::Cli::Build < Mrsk::Cli::Base desc "create", "Create a local build setup" def create run_locally do - debug "Using builder: #{MRSK.builder.name}" - execute *MRSK.builder.create + begin + debug "Using builder: #{MRSK.builder.name}" + execute *MRSK.builder.create + rescue SSHKit::Command::Failed => e + if e.message =~ /stderr=(.*)/ + error "Couldn't create remote builder: #{$1}" + false + else + raise + end + end end end