formula_versions: add version_attributes_map.

This allows querying multiple attributes in the same way as
`revision_map` did but without duplicating code or repeatedly traversing
history.
This commit is contained in:
Mike McQuaid 2016-08-18 12:52:25 +01:00
parent cc2a90ec8d
commit 55ba22e296
2 changed files with 14 additions and 6 deletions

View File

@ -627,7 +627,7 @@ class FormulaAuditor
return unless formula.tap.git? # git log is required
fv = FormulaVersions.new(formula, :max_depth => 10)
revision_map = fv.revision_map("origin/master")
revision_map = fv.version_attributes_map([:revision], "origin/master")
revisions = revision_map[formula.version]
if !revisions.empty?
problem "revision should not decrease" if formula.revision < revisions.max

View File

@ -60,14 +60,22 @@ class FormulaVersions
map
end
def revision_map(branch)
map = Hash.new { |h, k| h[k] = [] }
def version_attributes_map(attributes, branch)
attributes_map = {}
return attributes_map if attributes.empty?
attributes.each do |attribute|
attributes_map[attribute] = Hash.new { |h, k| h[k] = [] }
end
rev_list(branch) do |rev|
formula_at_revision(rev) do |f|
map[f.stable.version] << f.revision if f.stable
map[f.devel.version] << f.revision if f.devel
attributes.each do |attribute|
map = attributes_map[attribute]
map[f.stable.version] << f.send(attribute) if f.stable
map[f.devel.version] << f.send(attribute) if f.devel
end
end
end
map
attributes_map
end
end