audit: more checks for versioned aliases.
Check that a required versioned alias has a valid name (rather than assuming it’s fine based on it’s existence alone) and check for the presence of invalid version aliases. This should handle the case where someone bumps a formula but forgets to rename the alias that’s mentioned in #2596.
This commit is contained in:
parent
f1d4c4be78
commit
b14f1572b7
@ -307,26 +307,42 @@ class FormulaAuditor
|
||||
unversioned_name = unversioned_formula.basename(".rb")
|
||||
problem "#{formula} is versioned but no #{unversioned_name} formula exists"
|
||||
end
|
||||
elsif ARGV.build_stable?
|
||||
versioned_formulae = Dir[formula.path.to_s.gsub(/\.rb$/, "@*.rb")]
|
||||
needs_versioned_alias = !versioned_formulae.empty? &&
|
||||
formula.tap &&
|
||||
formula.aliases.grep(/.@\d/).empty?
|
||||
if needs_versioned_alias
|
||||
_, last_alias_version = File.basename(versioned_formulae.sort.reverse.first)
|
||||
.gsub(/\.rb$/, "")
|
||||
.split("@")
|
||||
elsif ARGV.build_stable? &&
|
||||
!(versioned_formulae = Dir[formula.path.to_s.gsub(/\.rb$/, "@*.rb")]).empty?
|
||||
versioned_aliases = formula.aliases.grep(/.@\d/)
|
||||
_, last_alias_version =
|
||||
File.basename(versioned_formulae.sort.reverse.first)
|
||||
.gsub(/\.rb$/, "").split("@")
|
||||
major, minor, = formula.version.to_s.split(".")
|
||||
alias_name_major = "#{formula.name}@#{major}"
|
||||
alias_name_major_minor = "#{alias_name_major}.#{minor}"
|
||||
alias_name = if last_alias_version.split(".").length == 1
|
||||
"#{formula.name}@#{major}"
|
||||
alias_name_major
|
||||
else
|
||||
"#{formula.name}@#{major}.#{minor}"
|
||||
alias_name_major_minor
|
||||
end
|
||||
valid_alias_names = [alias_name_major, alias_name_major_minor]
|
||||
|
||||
valid_versioned_aliases = versioned_aliases & valid_alias_names
|
||||
invalid_versioned_aliases = versioned_aliases - valid_alias_names
|
||||
|
||||
if valid_versioned_aliases.empty?
|
||||
if formula.tap
|
||||
problem <<-EOS.undent
|
||||
Formula has other versions so create an alias:
|
||||
Formula has other versions so create a versioned alias:
|
||||
cd #{formula.tap.alias_dir}
|
||||
ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name}
|
||||
EOS
|
||||
else
|
||||
problem "Formula has other versions so create an alias named #{alias_name}."
|
||||
end
|
||||
end
|
||||
|
||||
unless invalid_versioned_aliases.empty?
|
||||
problem <<-EOS.undent
|
||||
Formula has invalid versioned aliases:
|
||||
#{invalid_versioned_aliases.join("\n ")}
|
||||
EOS
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user