From b8972a6833dcbe6f4e842403436b9fbc2e3e456c Mon Sep 17 00:00:00 2001 From: Donal McBreen Date: Thu, 12 Sep 2024 16:01:49 +0100 Subject: [PATCH] Remove service directory on kamal remove --- lib/kamal/cli/app.rb | 15 +++++++++++++++ lib/kamal/cli/main.rb | 2 +- lib/kamal/commands/server.rb | 6 +++++- test/cli/main_test.rb | 1 + 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/kamal/cli/app.rb b/lib/kamal/cli/app.rb index 5b0535da..21a5ffdd 100644 --- a/lib/kamal/cli/app.rb +++ b/lib/kamal/cli/app.rb @@ -231,6 +231,7 @@ class Kamal::Cli::App < Kamal::Cli::Base stop remove_containers remove_images + remove_service_directory end end @@ -272,6 +273,20 @@ class Kamal::Cli::App < Kamal::Cli::Base end end + desc "remove_service_directory", "Remove the service directory from servers", hide: true + def remove_service_directory + with_lock do + on(KAMAL.hosts) do |host| + roles = KAMAL.roles_on(host) + + roles.each do |role| + execute *KAMAL.auditor.record("Removed #{KAMAL.config.service_directory} on all servers", role: role), verbosity: :debug + execute *KAMAL.server.remove_service_directory + end + end + end + end + desc "version", "Show app version currently running on servers" def version on(KAMAL.hosts) do |host| diff --git a/lib/kamal/cli/main.rb b/lib/kamal/cli/main.rb index c0f5f1a7..83391062 100644 --- a/lib/kamal/cli/main.rb +++ b/lib/kamal/cli/main.rb @@ -181,8 +181,8 @@ class Kamal::Cli::Main < Kamal::Cli::Base def remove confirming "This will remove all containers and images. Are you sure?" do with_lock do - invoke "kamal:cli:proxy:remove", [], options.without(:confirmed) invoke "kamal:cli:app:remove", [], options.without(:confirmed) + invoke "kamal:cli:proxy:remove", [], options.without(:confirmed) invoke "kamal:cli:accessory:remove", [ "all" ], options invoke "kamal:cli:registry:logout", [], options.without(:confirmed).merge(skip_local: true) end diff --git a/lib/kamal/commands/server.rb b/lib/kamal/commands/server.rb index 3bcb5eff..a619a82d 100644 --- a/lib/kamal/commands/server.rb +++ b/lib/kamal/commands/server.rb @@ -1,5 +1,9 @@ class Kamal::Commands::Server < Kamal::Commands::Base def ensure_service_directory - [ :mkdir, "-p", config.service_directory ] + make_directory config.service_directory + end + + def remove_service_directory + remove_directory config.service_directory end end diff --git a/test/cli/main_test.rb b/test/cli/main_test.rb index 6600765b..0956ba51 100644 --- a/test/cli/main_test.rb +++ b/test/cli/main_test.rb @@ -417,6 +417,7 @@ class CliMainTest < CliTestCase assert_match /docker ps --quiet --filter label=service=app | xargs docker stop/, output assert_match /docker container prune --force --filter label=service=app/, output assert_match /docker image prune --all --force --filter label=service=app/, output + assert_match "/usr/bin/env rm -r .kamal/apps/app", output assert_match /docker container stop app-mysql/, output assert_match /docker container prune --force --filter label=service=app-mysql/, output