Merge pull request #8635 from Rylan12/deprecate_disable_info

deprecate_disable: refactor and add to `info`
This commit is contained in:
Rylan Polster 2020-09-08 11:17:44 -04:00 committed by GitHub
commit 7d92454a56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 29 deletions

View File

@ -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}"

View File

@ -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

View File

@ -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