From 1f784176b7bbfed4891f6420c6c6240ab6950911 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 9 Mar 2023 11:17:28 +0100 Subject: [PATCH] Allow value-less options with true --- lib/mrsk/utils.rb | 4 ++-- test/commands/app_test.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mrsk/utils.rb b/lib/mrsk/utils.rb index b9b24596..d8860f1a 100644 --- a/lib/mrsk/utils.rb +++ b/lib/mrsk/utils.rb @@ -23,9 +23,9 @@ module Mrsk::Utils end end - # Returns a list of shell-dashed option arguments. + # Returns a list of shell-dashed option arguments. If the value is true, it's treated like a value-less option. def optionize(args) - args.collect { |(key, value)| [ "--#{key}", escape_shell_value(value) ] }.flatten + args.collect { |(key, value)| [ "--#{key}", value == true ? nil : escape_shell_value(value) ] }.flatten.compact end # Copied from SSHKit::Backend::Abstract#redact to be available inside Commands classes diff --git a/test/commands/app_test.rb b/test/commands/app_test.rb index c392e5e7..da436bcb 100644 --- a/test/commands/app_test.rb +++ b/test/commands/app_test.rb @@ -35,11 +35,11 @@ class CommandsAppTest < ActiveSupport::TestCase end test "run with custom options" do - @config[:servers] = { "web" => [ "1.1.1.1" ], "jobs" => { "hosts" => [ "1.1.1.2" ], "cmd" => "bin/jobs", "options" => { "mount" => "somewhere" } } } + @config[:servers] = { "web" => [ "1.1.1.1" ], "jobs" => { "hosts" => [ "1.1.1.2" ], "cmd" => "bin/jobs", "options" => { "mount" => "somewhere", "cap-add" => true } } } @app = Mrsk::Commands::App.new Mrsk::Configuration.new(@config).tap { |c| c.version = "999" } assert_equal \ - "docker run --detach --restart unless-stopped --log-opt max-size=10m --name app-999 -e RAILS_MASTER_KEY=\"456\" --label service=\"app\" --label role=\"jobs\" --mount \"somewhere\" dhh/app:999 bin/jobs", + "docker run --detach --restart unless-stopped --log-opt max-size=10m --name app-999 -e RAILS_MASTER_KEY=\"456\" --label service=\"app\" --label role=\"jobs\" --mount \"somewhere\" --cap-add dhh/app:999 bin/jobs", @app.run(role: :jobs).join(" ") end