Remove also removes accessories but requires confirmation
This commit is contained in:
@@ -135,9 +135,12 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base
|
|||||||
desc "remove", "Remove Traefik, app, accessories, and registry session from servers"
|
desc "remove", "Remove Traefik, app, accessories, and registry session from servers"
|
||||||
option :confirmed, aliases: "-y", type: :boolean, default: false, desc: "Proceed without confirmation question"
|
option :confirmed, aliases: "-y", type: :boolean, default: false, desc: "Proceed without confirmation question"
|
||||||
def remove
|
def remove
|
||||||
invoke "mrsk:cli:traefik:remove"
|
if options[:confirmed] || ask(remove_confirmation_question, limited_to: %w( y N ), default: "N") == "y"
|
||||||
invoke "mrsk:cli:app:remove"
|
invoke "mrsk:cli:traefik:remove", [], options.without(:confirmed)
|
||||||
invoke "mrsk:cli:registry:logout"
|
invoke "mrsk:cli:app:remove", [], options.without(:confirmed)
|
||||||
|
invoke "mrsk:cli:accessory:remove", [ "all" ]
|
||||||
|
invoke "mrsk:cli:registry:logout", [], options.without(:confirmed)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "version", "Show MRSK version"
|
desc "version", "Show MRSK version"
|
||||||
@@ -175,4 +178,10 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base
|
|||||||
on(host) { container_names = capture_with_info(*MRSK.app.list_container_names).split("\n") }
|
on(host) { container_names = capture_with_info(*MRSK.app.list_container_names).split("\n") }
|
||||||
Array(container_names).include?(container_name)
|
Array(container_names).include?(container_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def remove_confirmation_question
|
||||||
|
"This will remove all containers and images. " +
|
||||||
|
(MRSK.config.accessories.any? ? "Including #{MRSK.config.accessories.collect(&:name).to_sentence}. " : "") +
|
||||||
|
"Are you sure?"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -25,6 +25,29 @@ class CliMainTest < CliTestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "remove with confirmation" do
|
||||||
|
run_command("remove", "-y").tap do |output|
|
||||||
|
assert_match /docker container stop traefik/, output
|
||||||
|
assert_match /docker container prune -f --filter label=org.opencontainers.image.title=Traefik/, output
|
||||||
|
assert_match /docker image prune -a -f --filter label=org.opencontainers.image.title=Traefik/, output
|
||||||
|
|
||||||
|
assert_match /docker ps -q --filter label=service=app | xargs docker stop/, output
|
||||||
|
assert_match /docker container prune -f --filter label=service=app/, output
|
||||||
|
assert_match /docker image prune -a -f --filter label=service=app/, output
|
||||||
|
|
||||||
|
assert_match /docker container stop app-mysql/, output
|
||||||
|
assert_match /docker container prune -f --filter label=service=app-mysql/, output
|
||||||
|
assert_match /docker image prune -a -f --filter label=service=app-mysql/, output
|
||||||
|
assert_match /rm -rf app-mysql/, output
|
||||||
|
|
||||||
|
assert_match /docker container stop app-redis/, output
|
||||||
|
assert_match /docker container prune -f --filter label=service=app-redis/, output
|
||||||
|
assert_match /docker image prune -a -f --filter label=service=app-redis/, output
|
||||||
|
assert_match /rm -rf app-redis/, output
|
||||||
|
|
||||||
|
assert_match /docker logout/, output
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def run_command(*command)
|
def run_command(*command)
|
||||||
|
|||||||
Reference in New Issue
Block a user