diff --git a/lib/kamal/cli/main.rb b/lib/kamal/cli/main.rb index b1f54aba..b66073e4 100644 --- a/lib/kamal/cli/main.rb +++ b/lib/kamal/cli/main.rb @@ -1,15 +1,18 @@ class Kamal::Cli::Main < Kamal::Cli::Base desc "setup", "Setup all accessories, push the env, and deploy app to servers" + option :skip_push, aliases: "-P", type: :boolean, default: false, desc: "Skip image build and push" def setup print_runtime do mutating do + invoke_options = deploy_options + say "Ensure Docker is installed...", :magenta - invoke "kamal:cli:server:bootstrap" + invoke "kamal:cli:server:bootstrap", [], invoke_options say "Push env files...", :magenta - invoke "kamal:cli:env:push" + invoke "kamal:cli:env:push", [], invoke_options - invoke "kamal:cli:accessory:boot", [ "all" ] + invoke "kamal:cli:accessory:boot", [ "all" ], invoke_options deploy end end diff --git a/test/cli/main_test.rb b/test/cli/main_test.rb index a19ff90e..e13da92e 100644 --- a/test/cli/main_test.rb +++ b/test/cli/main_test.rb @@ -2,12 +2,31 @@ require_relative "cli_test_case" class CliMainTest < CliTestCase test "setup" do - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:server:bootstrap") - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:env:push") - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ]) + invoke_options = { "config_file" => "test/fixtures/deploy_simple.yml", "version" => "999", "skip_hooks" => false } + + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:server:bootstrap", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:env:push", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ], invoke_options) Kamal::Cli::Main.any_instance.expects(:deploy) - run_command("setup") + run_command("setup").tap do |output| + assert_match /Ensure Docker is installed.../, output + assert_match /Push env files.../, output + end + end + + test "setup with skip_push" do + invoke_options = { "config_file" => "test/fixtures/deploy_simple.yml", "version" => "999", "skip_hooks" => false } + + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:server:bootstrap", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:env:push", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ], invoke_options) + Kamal::Cli::Main.any_instance.expects(:deploy) + + run_command("setup", "--skip_push").tap do |output| + assert_match /Ensure Docker is installed.../, output + assert_match /Push env files.../, output + end end test "deploy" do