From c29a177a7a8f333527da10ff9ca680edd5e60b8d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Feb 2023 13:23:14 +0100 Subject: [PATCH] DRY the use of build options into one call --- lib/mrsk/commands/builder/base.rb | 24 +++++++++++++--------- lib/mrsk/commands/builder/multiarch.rb | 4 +--- lib/mrsk/commands/builder/native.rb | 2 +- lib/mrsk/commands/builder/native/remote.rb | 4 +--- test/commands/builder_test.rb | 4 ++-- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/mrsk/commands/builder/base.rb b/lib/mrsk/commands/builder/base.rb index ae39d16e..079b919a 100644 --- a/lib/mrsk/commands/builder/base.rb +++ b/lib/mrsk/commands/builder/base.rb @@ -5,19 +5,23 @@ class Mrsk::Commands::Builder::Base < Mrsk::Commands::Base docker :pull, config.absolute_image end - def build_args - argumentize "--build-arg", args, redacted: true - end - - def build_secrets - argumentize "--secret", secrets.collect { |secret| [ "id", secret ] } - end - - def build_tags - [ "-t", config.absolute_image, "-t", config.latest_image ] + def build_options + [ *build_tags, *build_args, *build_secrets ] end private + def build_args + argumentize "--build-arg", args, redacted: true + end + + def build_secrets + argumentize "--secret", secrets.collect { |secret| [ "id", secret ] } + end + + def build_tags + [ "-t", config.absolute_image, "-t", config.latest_image ] + end + def args (config.builder && config.builder["args"]) || {} end diff --git a/lib/mrsk/commands/builder/multiarch.rb b/lib/mrsk/commands/builder/multiarch.rb index 1a250bb2..43fb17d4 100644 --- a/lib/mrsk/commands/builder/multiarch.rb +++ b/lib/mrsk/commands/builder/multiarch.rb @@ -12,9 +12,7 @@ class Mrsk::Commands::Builder::Multiarch < Mrsk::Commands::Builder::Base "--push", "--platform", "linux/amd64,linux/arm64", "--builder", builder_name, - *build_tags, - *build_args, - *build_secrets, + *build_options, "." end diff --git a/lib/mrsk/commands/builder/native.rb b/lib/mrsk/commands/builder/native.rb index 51b1a072..338e5acf 100644 --- a/lib/mrsk/commands/builder/native.rb +++ b/lib/mrsk/commands/builder/native.rb @@ -9,7 +9,7 @@ class Mrsk::Commands::Builder::Native < Mrsk::Commands::Builder::Base def push combine \ - docker(:build, *build_tags, *build_args, *build_secrets, "."), + docker(:build, *build_options, "."), docker(:push, config.absolute_image) end diff --git a/lib/mrsk/commands/builder/native/remote.rb b/lib/mrsk/commands/builder/native/remote.rb index 0b0cb394..97a6193f 100644 --- a/lib/mrsk/commands/builder/native/remote.rb +++ b/lib/mrsk/commands/builder/native/remote.rb @@ -16,9 +16,7 @@ class Mrsk::Commands::Builder::Native::Remote < Mrsk::Commands::Builder::Native "--push", "--platform", platform, "--builder", builder_name, - *build_tags, - *build_args, - *build_secrets, + *build_options, "." end diff --git a/test/commands/builder_test.rb b/test/commands/builder_test.rb index 59733bce..d88e30eb 100644 --- a/test/commands/builder_test.rb +++ b/test/commands/builder_test.rb @@ -31,12 +31,12 @@ class CommandsBuilderTest < ActiveSupport::TestCase test "build args" do builder = new_builder_command(builder: { "args" => { "a" => 1, "b" => 2 } }) - assert_equal [ "--build-arg", "a=1", "--build-arg", "b=2" ], builder.target.build_args + assert_equal ["-t", "dhh/app:123", "-t", "dhh/app:latest", "--build-arg", "a=1", "--build-arg", "b=2"], builder.target.build_options end test "build secrets" do builder = new_builder_command(builder: { "secrets" => ["token_a", "token_b"] }) - assert_equal [ "--secret", "id=token_a", "--secret", "id=token_b" ], builder.target.build_secrets + assert_equal ["-t", "dhh/app:123", "-t", "dhh/app:latest", "--secret", "id=token_a", "--secret", "id=token_b"], builder.target.build_options end test "native push with build args" do