Allow multiple arguments for exec commands
If you can have an alias like: ``` aliases: rails: app exec -p rails ``` Then `kamal rails db:migrate:status` will execute `kamal app exec -p rails db:migrate:status`. So this works, we'll allow multiple arguments `app exec` and `server exec` to accept multiple arguments. The arguments are combined by simply joining them with a space. This means that these are equivalent: ``` kamal app exec -p rails db:migrate:status kamal app exec -p "rails db:migrate:status" ``` If you want to pass an argument with spaces, you'll need to quote it: ``` kamal app exec -p "git commit -am \"My comment\"" kamal app exec -p git commit -am "\"My comment\"" ```
This commit is contained in:
@@ -3,8 +3,8 @@ require_relative "cli_test_case"
|
||||
class CliServerTest < CliTestCase
|
||||
test "running a command with exec" do
|
||||
SSHKit::Backend::Abstract.any_instance.stubs(:capture)
|
||||
.with("date", verbosity: 1)
|
||||
.returns("Today")
|
||||
.with("date", verbosity: 1)
|
||||
.returns("Today")
|
||||
|
||||
hosts = "1.1.1.1".."1.1.1.4"
|
||||
run_command("exec", "date").tap do |output|
|
||||
@@ -15,6 +15,20 @@ class CliServerTest < CliTestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "running a command with exec multiple arguments" do
|
||||
SSHKit::Backend::Abstract.any_instance.stubs(:capture)
|
||||
.with("date -j", verbosity: 1)
|
||||
.returns("Today")
|
||||
|
||||
hosts = "1.1.1.1".."1.1.1.4"
|
||||
run_command("exec", "date", "-j").tap do |output|
|
||||
hosts.map do |host|
|
||||
assert_match "Running 'date -j' on #{hosts.to_a.join(', ')}...", output
|
||||
assert_match "App Host: #{host}\nToday", output
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "bootstrap already installed" do
|
||||
stub_setup
|
||||
SSHKit::Backend::Abstract.any_instance.expects(:execute).with(:docker, "-v", raise_on_non_zero_exit: false).returns(true).at_least_once
|
||||
|
||||
Reference in New Issue
Block a user