From a8bcd92628011a550fe9479b58da64e2c4187268 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Mon, 7 Sep 2020 13:00:02 -0400 Subject: [PATCH] deprecate_disable: refactor and add to `info` --- Library/Homebrew/cmd/info.rb | 10 +++++++ Library/Homebrew/deprecate_disable.rb | 35 +++++++++++++++++++++++ Library/Homebrew/formula_installer.rb | 41 ++++++++------------------- 3 files changed, 57 insertions(+), 29 deletions(-) create mode 100644 Library/Homebrew/deprecate_disable.rb diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index ba2b7a26b3..c204f6467f 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -9,6 +9,7 @@ require "keg" require "tab" require "json" require "utils/spdx" +require "deprecate_disable" module Homebrew module_function @@ -176,6 +177,15 @@ module Homebrew puts f.desc if f.desc puts Formatter.url(f.homepage) if f.homepage + deprecate_disable_type, deprecate_disable_reason = DeprecateDisable.deprecate_disable_info f + if deprecate_disable_type.present? + if deprecate_disable_reason.present? + puts "#{deprecate_disable_type.capitalize} because it #{deprecate_disable_reason}!" + else + puts "#{deprecate_disable_type.capitalize}!" + end + end + conflicts = f.conflicts.map do |c| reason = " (because #{c.reason})" if c.reason "#{c.name}#{reason}" diff --git a/Library/Homebrew/deprecate_disable.rb b/Library/Homebrew/deprecate_disable.rb new file mode 100644 index 0000000000..3423f90e30 --- /dev/null +++ b/Library/Homebrew/deprecate_disable.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +# Helper module for handling disable! and deprecate! +# +# @api private +module DeprecateDisable + module_function + + DEPRECATE_DISABLE_REASONS = { + does_not_build: "does not build", + no_license: "has no license", + repo_archived: "has an archived upstream repository", + repo_removed: "has a removed upstream repository", + unmaintained: "is not maintained upstream", + unsupported: "is not supported upstream", + deprecated_upstream: "is deprecated upstream", + versioned_formula: "is a versioned formula", + }.freeze + + def deprecate_disable_info(formula) + return unless formula.deprecated? || formula.disabled? + + if formula.deprecated? + type = :deprecated + reason = formula.deprecation_reason + else + type = :disabled + reason = formula.disable_reason + end + + reason = DEPRECATE_DISABLE_REASONS[reason] if DEPRECATE_DISABLE_REASONS.key? reason + + [type, reason] + end +end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 79d3259106..b6c38e128b 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -20,6 +20,7 @@ require "cask/cask_loader" require "cmd/install" require "find" require "utils/spdx" +require "deprecate_disable" # Installer for a formula. # @@ -202,40 +203,22 @@ class FormulaInstaller def check_install_sanity raise FormulaInstallationAlreadyAttemptedError, formula if self.class.attempted.include?(formula) - deprecate_disable_reasons = { - does_not_build: "does not build", - no_license: "has no license", - repo_archived: "has an archived upstream repository", - repo_removed: "has a removed upstream repository", - unmaintained: "is not maintained upstream", - unsupported: "is not supported upstream", - deprecated_upstream: "is deprecated upstream", - versioned_formula: "is a versioned formula", - } + type, reason = DeprecateDisable.deprecate_disable_info formula - if formula.deprecated? - if formula.deprecation_reason.present? - reason = if deprecate_disable_reasons.key? formula.deprecation_reason - deprecate_disable_reasons[formula.deprecation_reason] + if type.present? + case type + when :deprecated + if reason.present? + opoo "#{formula.full_name} has been deprecated because it #{reason}!" else - formula.deprecation_reason + opoo "#{formula.full_name} has been deprecated!" end - - opoo "#{formula.full_name} has been deprecated because it #{reason}!" - else - opoo "#{formula.full_name} has been deprecated!" - end - elsif formula.disabled? - if formula.disable_reason.present? - reason = if deprecate_disable_reasons.key? formula.disable_reason - deprecate_disable_reasons[formula.disable_reason] + when :disabled + if reason.present? + odie "#{formula.full_name} has been disabled because it #{reason}!" else - formula.disable_reason + odie "#{formula.full_name} has been disabled!" end - - odie "#{formula.full_name} has been disabled because it #{reason}!" - else - odie "#{formula.full_name} has been disabled!" end end