From 0e489a8c04085a9d17e816cb344bb6c05f353bcb Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Thu, 21 Mar 2024 10:25:16 -0700 Subject: [PATCH] Port Homebrew::DevCmd::InstallBundlerGems --- .../dev-cmd/generate-man-completions.rb | 1 + .../Homebrew/dev-cmd/install-bundler-gems.rb | 58 +++++++++---------- .../test/dev-cmd/install-bundler-gems_spec.rb | 8 +++ 3 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 Library/Homebrew/test/dev-cmd/install-bundler-gems_spec.rb diff --git a/Library/Homebrew/dev-cmd/generate-man-completions.rb b/Library/Homebrew/dev-cmd/generate-man-completions.rb index d4bf2db5b4..154041956b 100644 --- a/Library/Homebrew/dev-cmd/generate-man-completions.rb +++ b/Library/Homebrew/dev-cmd/generate-man-completions.rb @@ -11,6 +11,7 @@ module Homebrew module DevCmd class GenerateManCompletions < AbstractCommand include SystemCommand::Mixin + cmd_args do description <<~EOS Generate Homebrew's manpages and shell completions. diff --git a/Library/Homebrew/dev-cmd/install-bundler-gems.rb b/Library/Homebrew/dev-cmd/install-bundler-gems.rb index 167bfa804f..3769be2fdf 100644 --- a/Library/Homebrew/dev-cmd/install-bundler-gems.rb +++ b/Library/Homebrew/dev-cmd/install-bundler-gems.rb @@ -1,41 +1,39 @@ -# typed: true +# typed: strict # frozen_string_literal: true require "cli/parser" module Homebrew - module_function + module DevCmd + class InstallBundlerGems < AbstractCommand + cmd_args do + description <<~EOS + Install Homebrew's Bundler gems. + EOS + comma_array "--groups", + description: "Installs the specified comma-separated list of gem groups (default: last used). " \ + "Replaces any previously installed groups." + comma_array "--add-groups", + description: "Installs the specified comma-separated list of gem groups, " \ + "in addition to those already installed." - sig { returns(CLI::Parser) } - def install_bundler_gems_args - Homebrew::CLI::Parser.new do - description <<~EOS - Install Homebrew's Bundler gems. - EOS - comma_array "--groups", - description: "Installs the specified comma-separated list of gem groups (default: last used). " \ - "Replaces any previously installed groups." - comma_array "--add-groups", - description: "Installs the specified comma-separated list of gem groups, " \ - "in addition to those already installed." + conflicts "--groups", "--add-groups" - conflicts "--groups", "--add-groups" + named_args :none + end - named_args :none + sig { override.void } + def run + groups = args.groups || args.add_groups || [] + + if groups.delete("all") + groups |= Homebrew.valid_gem_groups + elsif args.groups # if we have been asked to replace + Homebrew.forget_user_gem_groups! + end + + Homebrew.install_bundler_gems!(groups:) + end end end - - def install_bundler_gems - args = install_bundler_gems_args.parse - - groups = args.groups || args.add_groups || [] - - if groups.delete("all") - groups |= Homebrew.valid_gem_groups - elsif args.groups # if we have been asked to replace - Homebrew.forget_user_gem_groups! - end - - Homebrew.install_bundler_gems!(groups:) - end end diff --git a/Library/Homebrew/test/dev-cmd/install-bundler-gems_spec.rb b/Library/Homebrew/test/dev-cmd/install-bundler-gems_spec.rb new file mode 100644 index 0000000000..d7d33e739e --- /dev/null +++ b/Library/Homebrew/test/dev-cmd/install-bundler-gems_spec.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require "cmd/shared_examples/args_parse" +require "dev-cmd/install-bundler-gems" + +RSpec.describe Homebrew::DevCmd::InstallBundlerGems do + it_behaves_like "parseable arguments" +end