Make --detach incompatible with reuse or interactive
This commit is contained in:
@@ -96,6 +96,10 @@ class Kamal::Cli::App < Kamal::Cli::Base
|
|||||||
option :env, aliases: "-e", type: :hash, desc: "Set environment variables for the command"
|
option :env, aliases: "-e", type: :hash, desc: "Set environment variables for the command"
|
||||||
option :detach, type: :boolean, default: false, desc: "Execute command in a detached container"
|
option :detach, type: :boolean, default: false, desc: "Execute command in a detached container"
|
||||||
def exec(*cmd)
|
def exec(*cmd)
|
||||||
|
if (incompatible_options = [ :interactive, :reuse ].select { |key| options[:detach] && options[key] }.presence)
|
||||||
|
raise ArgumentError, "Detach is not compatible with #{incompatible_options.join(" or ")}"
|
||||||
|
end
|
||||||
|
|
||||||
cmd = Kamal::Utils.join_commands(cmd)
|
cmd = Kamal::Utils.join_commands(cmd)
|
||||||
env = options[:env]
|
env = options[:env]
|
||||||
detach = options[:detach]
|
detach = options[:detach]
|
||||||
|
|||||||
@@ -279,6 +279,24 @@ class CliAppTest < CliTestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "exec detach with reuse" do
|
||||||
|
assert_raises(ArgumentError, "Detach is not compatible with reuse") do
|
||||||
|
run_command("exec", "--detach", "--reuse", "ruby -v")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "exec detach with interactive" do
|
||||||
|
assert_raises(ArgumentError, "Detach is not compatible with interactive") do
|
||||||
|
run_command("exec", "--interactive", "--detach", "ruby -v")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "exec detach with interactive and reuse" do
|
||||||
|
assert_raises(ArgumentError, "Detach is not compatible with interactive or reuse") do
|
||||||
|
run_command("exec", "--interactive", "--detach", "--reuse", "ruby -v")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "exec with reuse" do
|
test "exec with reuse" do
|
||||||
run_command("exec", "--reuse", "ruby -v").tap do |output|
|
run_command("exec", "--reuse", "ruby -v").tap do |output|
|
||||||
assert_match "sh -c 'docker ps --latest --format '\\''{{.Names}}'\\'' --filter label=service=app --filter label=destination= --filter label=role=web --filter status=running --filter status=restarting --filter ancestor=$(docker image ls --filter reference=dhh/app:latest --format '\\''{{.ID}}'\\'') ; docker ps --latest --format '\\''{{.Names}}'\\'' --filter label=service=app --filter label=destination= --filter label=role=web --filter status=running --filter status=restarting' | head -1 | while read line; do echo ${line#app-web-}; done", output # Get current version
|
assert_match "sh -c 'docker ps --latest --format '\\''{{.Names}}'\\'' --filter label=service=app --filter label=destination= --filter label=role=web --filter status=running --filter status=restarting --filter ancestor=$(docker image ls --filter reference=dhh/app:latest --format '\\''{{.ID}}'\\'') ; docker ps --latest --format '\\''{{.Names}}'\\'' --filter label=service=app --filter label=destination= --filter label=role=web --filter status=running --filter status=restarting' | head -1 | while read line; do echo ${line#app-web-}; done", output # Get current version
|
||||||
|
|||||||
Reference in New Issue
Block a user