Class: Ki::VersionIterator

Inherits:
Object show all
Defined in:
lib/data_access/version_iterators.rb

Direct Known Subclasses

FileFinder

Instance Method Summary collapse

Instance Method Details

#iterate_dependenciesObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/data_access/version_iterators.rb', line 43

def iterate_dependencies
  version..dependencies.map do |dep|
    if internals || !dep["internal"]
      dep_v = VersionIterator.new
      dep_v.version = finder.version(dep["version_id"])
      dep_v.dependency = dep
      dep_v.exclude_dependencies.concat(exclude_dependencies).concat(select_dep_rm(dep))
      dep_v.block = block
      if dep["path"] || package_path
        dep_v.package_path = File.join([package_path, dep["path"]].compact)
      end
      if dependency_path || dep["name"]
        dep_v.dependency_path = File.join([dependency_path, dep["name"]].compact)
      end
      if ok_to_iterate_dependency(dep_v)
        [dep, dep_v.version, block.call(dep_v)]
      end
    end
  end.compact
end

#iterate_versions(&block) ⇒ Object



30
31
32
33
34
35
# File 'lib/data_access/version_iterators.rb', line 30

def iterate_versions(&block)
  start_iteration do |version_iterator|
    block.call(version_iterator.version)
    version_iterator.iterate_dependencies
  end
end

#ok_to_iterate_dependency(dep_v) ⇒ Object



77
78
79
# File 'lib/data_access/version_iterators.rb', line 77

def ok_to_iterate_dependency(dep_v)
  !(exclude_dependencies.size > 0 && (exclude_dependencies.any_matches?(dep_v.version.version_id) || dep_v.dependency_path && exclude_dependencies.any_matches?(dep_v.dependency_path)))
end

#select_dep_rm(dep_v) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/data_access/version_iterators.rb', line 64

def select_dep_rm(dep_v)
  ops = dep_v["operations"]
  if ops
    ops.map do |op|
      if op.first == "dep-rm"
        op[1..-1]
      end
    end.compact.flatten
  else
    []
  end
end

#start_iteration(&block) ⇒ Object



37
38
39
40
41
# File 'lib/data_access/version_iterators.rb', line 37

def start_iteration(&block)
  @block = block
  @internals = true
  block.call(self)
end