Allow destination and config-file in aliases
We only loaded the configuration once, which meant that aliases always used the initial configuration file and destination. We don't want to load the configuration in subcommands as it is not passed all the options we need. But just checking if we are in a subcommand is enough - the alias reloads and the subcommand does not. One thing to note is that anything passed on the command line overrides what is in the alias, so if an alias says `other_config: config -c config/deploy2.yml` and you run `kamal other_config -c config/deploy.yml`, it won't switch.
This commit is contained in:
@@ -460,6 +460,7 @@ class CliMainTest < CliTestCase
|
||||
|
||||
test "run an alias for a console" do
|
||||
run_command("console", config_file: "deploy_with_aliases").tap do |output|
|
||||
assert_no_match "App Host: 1.1.1.4", output
|
||||
assert_match "docker exec app-console-999 bin/console on 1.1.1.5", output
|
||||
assert_match "App Host: 1.1.1.5", output
|
||||
end
|
||||
@@ -486,6 +487,33 @@ class CliMainTest < CliTestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "switch config file with an alias" do
|
||||
with_config_files do
|
||||
with_argv([ "other_config" ]) do
|
||||
stdouted { Kamal::Cli::Main.start }.tap do |output|
|
||||
assert_match ":service_with_version: app2-999", output
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "switch destination with an alias" do
|
||||
with_config_files do
|
||||
with_argv([ "other_destination_config" ]) do
|
||||
stdouted { Kamal::Cli::Main.start }.tap do |output|
|
||||
assert_match ":service_with_version: app3-999", output
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "run on primary via alias" do
|
||||
run_command("primary_details", config_file: "deploy_with_aliases").tap do |output|
|
||||
assert_match "App Host: 1.1.1.1", output
|
||||
assert_no_match "App Host: 1.1.1.2", output
|
||||
end
|
||||
end
|
||||
|
||||
test "upgrade" do
|
||||
invoke_options = { "config_file" => "test/fixtures/deploy_with_accessories.yml", "skip_hooks" => false, "confirmed" => true, "rolling" => false }
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:proxy:upgrade", [], invoke_options)
|
||||
@@ -530,6 +558,20 @@ class CliMainTest < CliTestCase
|
||||
end
|
||||
end
|
||||
|
||||
def with_config_files
|
||||
Dir.mktmpdir do |tmpdir|
|
||||
config_dir = File.join(tmpdir, "config")
|
||||
FileUtils.mkdir_p(config_dir)
|
||||
FileUtils.cp "test/fixtures/deploy.yml", config_dir
|
||||
FileUtils.cp "test/fixtures/deploy2.yml", config_dir
|
||||
FileUtils.cp "test/fixtures/deploy.elsewhere.yml", config_dir
|
||||
|
||||
Dir.chdir(tmpdir) do
|
||||
yield
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def assert_file(file, content)
|
||||
assert_match content, File.read(file)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user