Merge pull request #13015 from Bo98/alias-audit
formula_auditor: fix versioned alias audit
This commit is contained in:
commit
23b32725bb
@ -68,31 +68,42 @@ module Homebrew
|
|||||||
unversioned_name = unversioned_formula.basename(".rb")
|
unversioned_name = unversioned_formula.basename(".rb")
|
||||||
problem "#{formula} is versioned but no #{unversioned_name} formula exists"
|
problem "#{formula} is versioned but no #{unversioned_name} formula exists"
|
||||||
end
|
end
|
||||||
elsif @build_stable &&
|
elsif formula.stable? &&
|
||||||
formula.stable? &&
|
|
||||||
!@versioned_formula &&
|
!@versioned_formula &&
|
||||||
(versioned_formulae = formula.versioned_formulae - [formula]) &&
|
(versioned_formulae = formula.versioned_formulae - [formula]) &&
|
||||||
versioned_formulae.present?
|
versioned_formulae.present?
|
||||||
versioned_aliases = formula.aliases.grep(/.@\d/)
|
versioned_aliases, unversioned_aliases = formula.aliases.partition { |a| a =~ /.@\d/ }
|
||||||
_, last_alias_version = versioned_formulae.map(&:name).last.split("@")
|
_, last_alias_version = versioned_formulae.map(&:name).last.split("@")
|
||||||
|
|
||||||
alias_name_major = "#{formula.name}@#{formula.version.major}"
|
alias_name_major = "#{formula.name}@#{formula.version.major}"
|
||||||
alias_name_major_minor = "#{alias_name_major}.#{formula.version.minor}"
|
alias_name_major_minor = "#{formula.name}@#{formula.version.major_minor}"
|
||||||
alias_name = if last_alias_version.split(".").length == 1
|
alias_name = if last_alias_version.split(".").length == 1
|
||||||
alias_name_major
|
alias_name_major
|
||||||
else
|
else
|
||||||
alias_name_major_minor
|
alias_name_major_minor
|
||||||
end
|
end
|
||||||
valid_alias_names = [alias_name_major, alias_name_major_minor]
|
valid_main_alias_names = [alias_name_major, alias_name_major_minor].uniq
|
||||||
|
|
||||||
unless @core_tap
|
# Also accept versioned aliases with names of other aliases, but do not require them.
|
||||||
versioned_aliases.map! { |a| "#{formula.tap}/#{a}" }
|
valid_other_alias_names = unversioned_aliases.flat_map do |name|
|
||||||
valid_alias_names.map! { |a| "#{formula.tap}/#{a}" }
|
%W[
|
||||||
|
#{name}@#{formula.version.major}
|
||||||
|
#{name}@#{formula.version.major_minor}
|
||||||
|
].uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
valid_versioned_aliases = versioned_aliases & valid_alias_names
|
unless @core_tap
|
||||||
invalid_versioned_aliases = versioned_aliases - valid_alias_names
|
[versioned_aliases, valid_main_alias_names, valid_other_alias_names].each do |array|
|
||||||
|
array.map! { |a| "#{formula.tap}/#{a}" }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if valid_versioned_aliases.empty?
|
valid_versioned_aliases = versioned_aliases & valid_main_alias_names
|
||||||
|
invalid_versioned_aliases = versioned_aliases - valid_main_alias_names - valid_other_alias_names
|
||||||
|
|
||||||
|
latest_versioned_formula = versioned_formulae.map(&:name).first
|
||||||
|
|
||||||
|
if valid_versioned_aliases.empty? && alias_name != latest_versioned_formula
|
||||||
if formula.tap
|
if formula.tap
|
||||||
problem <<~EOS
|
problem <<~EOS
|
||||||
Formula has other versions so create a versioned alias:
|
Formula has other versions so create a versioned alias:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user