Port Homebrew::Cmd::Reinstall

This commit is contained in:
Douglas Eichelberger 2024-04-01 10:09:48 -07:00
parent 057f561d2c
commit d875c970e9
2 changed files with 165 additions and 162 deletions

View File

@ -1,12 +1,12 @@
# typed: true
# typed: strict
# frozen_string_literal: true
require "abstract_command"
require "formula_installer"
require "development_tools"
require "messages"
require "install"
require "reinstall"
require "cli/parser"
require "cleanup"
require "cask/utils"
require "cask/macos"
@ -15,9 +15,9 @@ require "upgrade"
require "api"
module Homebrew
sig { returns(CLI::Parser) }
def self.reinstall_args
Homebrew::CLI::Parser.new do
module Cmd
class Reinstall < AbstractCommand
cmd_args do
description <<~EOS
Uninstall and then reinstall a <formula> or <cask> using the same options it was
originally installed with, plus any appended options specific to a <formula>.
@ -106,13 +106,13 @@ module Homebrew
named_args [:formula, :cask], min: 1
end
end
def self.reinstall
args = reinstall_args.parse
formulae, casks = args.named.to_formulae_and_casks(method: :resolve)
.partition { |o| o.is_a?(Formula) }
sig { override.void }
def run
formulae, casks = T.cast(
args.named.to_formulae_and_casks(method: :resolve).partition { _1.is_a?(Formula) },
[T::Array[Formula], T::Array[Cask::Cask]],
)
if args.build_from_source?
unless DevelopmentTools.installed?
@ -133,7 +133,7 @@ module Homebrew
next
end
Migrator.migrate_if_needed(formula, force: args.force?)
reinstall_formula(
Homebrew.reinstall_formula(
formula,
flags: args.flags_only,
installed_on_request: args.named.present?,
@ -184,3 +184,5 @@ module Homebrew
Homebrew.messages.display_messages(display_times: args.display_times?)
end
end
end
end

View File

@ -1,9 +1,10 @@
# frozen_string_literal: true
require "extend/ENV"
require "cmd/reinstall"
require "cmd/shared_examples/args_parse"
RSpec.describe "brew reinstall" do
RSpec.describe Homebrew::Cmd::Reinstall do
it_behaves_like "parseable arguments"
it "reinstalls a Formula", :integration_test do