feature: add NAME=all option for accessory reboot

This commit is contained in:
dmitrytrager
2023-10-19 20:46:08 +02:00
parent 83a2d52ff4
commit 2d22143a24
2 changed files with 24 additions and 8 deletions

View File

@@ -49,9 +49,12 @@ class Kamal::Cli::Accessory < Kamal::Cli::Base
end
end
desc "reboot [NAME]", "Reboot existing accessory on host (stop container, remove container, start new container)"
desc "reboot [NAME]", "Reboot existing accessory on host (stop container, remove container, start new container; use NAME=all to boot all accessories)"
def reboot(name)
mutating do
if name == "all"
KAMAL.accessory_names.each { |accessory_name| reboot(accessory_name) }
else
with_accessory(name) do |accessory|
on(accessory.hosts) do
execute *KAMAL.registry.login
@@ -63,6 +66,7 @@ class Kamal::Cli::Accessory < Kamal::Cli::Base
end
end
end
end
desc "start [NAME]", "Start existing accessory container on host"
def start(name)

View File

@@ -48,6 +48,18 @@ class CliAccessoryTest < CliTestCase
run_command("reboot", "mysql")
end
test "reboot all" do
Kamal::Commands::Registry.any_instance.expects(:login).times(3)
Kamal::Cli::Accessory.any_instance.expects(:stop).with("mysql")
Kamal::Cli::Accessory.any_instance.expects(:remove_container).with("mysql")
Kamal::Cli::Accessory.any_instance.expects(:boot).with("mysql", login: false)
Kamal::Cli::Accessory.any_instance.expects(:stop).with("redis")
Kamal::Cli::Accessory.any_instance.expects(:remove_container).with("redis")
Kamal::Cli::Accessory.any_instance.expects(:boot).with("redis", login: false)
run_command("reboot", "all")
end
test "start" do
assert_match "docker container start app-mysql", run_command("start", "mysql")
end