From 5ccb0b0567211a04cfffed6e77cbb1245da5187e Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Mon, 1 Apr 2024 11:47:18 -0700 Subject: [PATCH] Port Homebrew::Cmd::Unlink --- Library/Homebrew/cmd/unlink.rb | 58 ++++++++++++------------ Library/Homebrew/test/cmd/unlink_spec.rb | 3 +- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Library/Homebrew/cmd/unlink.rb b/Library/Homebrew/cmd/unlink.rb index f7572d15f6..cb6dcff4a1 100644 --- a/Library/Homebrew/cmd/unlink.rb +++ b/Library/Homebrew/cmd/unlink.rb @@ -1,41 +1,39 @@ -# typed: true +# typed: strict # frozen_string_literal: true -require "cli/parser" +require "abstract_command" require "unlink" module Homebrew - module_function + module Cmd + class UnlinkCmd < AbstractCommand + cmd_args do + description <<~EOS + Remove symlinks for from Homebrew's prefix. This can be useful + for temporarily disabling a formula: + `brew unlink` `&&` `&& brew link` + EOS + switch "-n", "--dry-run", + description: "List files which would be unlinked without actually unlinking or " \ + "deleting any files." - sig { returns(CLI::Parser) } - def unlink_args - Homebrew::CLI::Parser.new do - description <<~EOS - Remove symlinks for from Homebrew's prefix. This can be useful - for temporarily disabling a formula: - `brew unlink` `&&` `&& brew link` - EOS - switch "-n", "--dry-run", - description: "List files which would be unlinked without actually unlinking or " \ - "deleting any files." - - named_args :installed_formula, min: 1 - end - end - - def unlink - args = unlink_args.parse - - options = { dry_run: args.dry_run?, verbose: args.verbose? } - - args.named.to_default_kegs.each do |keg| - if args.dry_run? - puts "Would remove:" - keg.unlink(**options) - next + named_args :installed_formula, min: 1 end - Unlink.unlink(keg, dry_run: args.dry_run?, verbose: args.verbose?) + sig { override.void } + def run + options = { dry_run: args.dry_run?, verbose: args.verbose? } + + args.named.to_default_kegs.each do |keg| + if args.dry_run? + puts "Would remove:" + keg.unlink(**options) + next + end + + Unlink.unlink(keg, dry_run: args.dry_run?, verbose: args.verbose?) + end + end end end end diff --git a/Library/Homebrew/test/cmd/unlink_spec.rb b/Library/Homebrew/test/cmd/unlink_spec.rb index 36f0e08337..e00fd8311d 100644 --- a/Library/Homebrew/test/cmd/unlink_spec.rb +++ b/Library/Homebrew/test/cmd/unlink_spec.rb @@ -1,8 +1,9 @@ # frozen_string_literal: true require "cmd/shared_examples/args_parse" +require "cmd/unlink" -RSpec.describe "brew unlink" do +RSpec.describe Homebrew::Cmd::UnlinkCmd do it_behaves_like "parseable arguments" it "unlinks a Formula", :integration_test do