Module: Depcheck::Analyzer

Defined in:
lib/depcheck/analyzer.rb

Class Method Summary collapse

Class Method Details

.generate_dependencies(swiftdeps) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/depcheck/analyzer.rb', line 6

def self.generate_dependencies(swiftdeps)
  results = []
  usage = {}

  swiftdeps.each do |my_text_file|
    begin
      dependencies = YAML.load_file(my_text_file)
    rescue
      next
    end

    provides = dependencies['provides-top-level']
    nominals = dependencies['provides-nominal']
    depends = dependencies['depends-top-level'] || []
    depends_member = dependencies['depends-member'] || []

    if provides.nil? || nominals.nil? || provides.count != nominals.count
      next
    end

    provides.zip(nominals).each do |name, nominal|
      dependencies = []

      depends_member.each do |d|
        if d[0] == nominal && depends.include?(d[1]) && valid_dep?(d[1])
          dependencies << d[1]
          usage[d[1]] = usage[d[1]].to_i + 1
        end
      end

      results << DependencyInfo.new(name, nominal, dependencies)
    end
  end

  results.each do |r|
    value = usage[r.name]
    r.usage = value if value
  end

  results
end