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")
|
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 ARGV.build_stable?
|
elsif ARGV.build_stable? &&
|
||||||
versioned_formulae = Dir[formula.path.to_s.gsub(/\.rb$/, "@*.rb")]
|
!(versioned_formulae = Dir[formula.path.to_s.gsub(/\.rb$/, "@*.rb")]).empty?
|
||||||
needs_versioned_alias = !versioned_formulae.empty? &&
|
versioned_aliases = formula.aliases.grep(/.@\d/)
|
||||||
formula.tap &&
|
_, last_alias_version =
|
||||||
formula.aliases.grep(/.@\d/).empty?
|
File.basename(versioned_formulae.sort.reverse.first)
|
||||||
if needs_versioned_alias
|
.gsub(/\.rb$/, "").split("@")
|
||||||
_, last_alias_version = File.basename(versioned_formulae.sort.reverse.first)
|
|
||||||
.gsub(/\.rb$/, "")
|
|
||||||
.split("@")
|
|
||||||
major, minor, = formula.version.to_s.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
|
alias_name = if last_alias_version.split(".").length == 1
|
||||||
"#{formula.name}@#{major}"
|
alias_name_major
|
||||||
else
|
else
|
||||||
"#{formula.name}@#{major}.#{minor}"
|
alias_name_major_minor
|
||||||
end
|
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
|
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}
|
cd #{formula.tap.alias_dir}
|
||||||
ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name}
|
ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name}
|
||||||
EOS
|
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
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user