From 78e50f23cd6d8e851ca9679a9141204f7bc9eb9a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 23 Jan 2023 10:38:03 +0100 Subject: [PATCH] All boot/remove for all accessories --- lib/mrsk/cli/accessory.rb | 26 +++++++++++++++++--------- lib/mrsk/commander.rb | 4 ++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/mrsk/cli/accessory.rb b/lib/mrsk/cli/accessory.rb index 6d91f1f3..31104cc2 100644 --- a/lib/mrsk/cli/accessory.rb +++ b/lib/mrsk/cli/accessory.rb @@ -1,12 +1,16 @@ require "mrsk/cli/base" class Mrsk::Cli::Accessory < Mrsk::Cli::Base - desc "boot [NAME]", "Boot accessory service on host" + desc "boot [NAME]", "Boot accessory service on host (use NAME=all to boot all accessories)" def boot(name) - invoke :upload, [ name ] + if name == "all" + MRSK.accessory_names.each { |accessory_name| boot(accessory_name) } + else + upload(name) - accessory = MRSK.accessory(name) - on(accessory.host) { execute *accessory.run } + accessory = MRSK.accessory(name) + on(accessory.host) { execute *accessory.run } + end end desc "upload [NAME]", "Upload accessory files to host" @@ -77,12 +81,16 @@ class Mrsk::Cli::Accessory < Mrsk::Cli::Base end end - desc "remove [NAME]", "Remove accessory container and image from host" + desc "remove [NAME]", "Remove accessory container and image from host (use NAME=all to boot all accessories)" def remove(name) - invoke :stop, [ name ] - invoke :remove_container, [ name ] - invoke :remove_image, [ name ] - invoke :remove_files, [ name ] + if name == "all" + MRSK.accessory_names.each { |accessory_name| remove(accessory_name) } + else + stop(name) + remove_container(name) + remove_image(name) + remove_files(name) + end end desc "remove_container [NAME]", "Remove accessory container from host" diff --git a/lib/mrsk/commander.rb b/lib/mrsk/commander.rb index a6b52ea4..9baf68fe 100644 --- a/lib/mrsk/commander.rb +++ b/lib/mrsk/commander.rb @@ -48,6 +48,10 @@ class Mrsk::Commander specific_hosts || config.accessories.collect(&:host) end + def accessory_names + config.accessories.collect(&:name) + end + def app @app ||= Mrsk::Commands::App.new(config)