Sha256: 5abf915666ac7a29f5fdf40b89a4049d5c3ae299c7da5eac164605f459f96760

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module LicenseFinder
  class DependencyList

    attr_reader :dependencies

    def self.from_bundler
      new(BundlerDependencyQuery.new.dependencies)
    end

    def initialize(dependencies)
      @dependencies = dependencies
    end

    def self.from_yaml(yml)
      deps = YAML.load(yml)
      new(deps.map { |dhash| Dependency.from_hash(dhash) })
    end

    def merge(new_list)
      deps = new_list.dependencies.map do |new_dep|
        old_dep = dependencies.detect { |d| d.name == new_dep.name }

        if old_dep
          old_dep.merge(new_dep)
        else
          new_dep
        end
      end

      deps += dependencies.select { |d| d.source != "bundle" }

      self.class.new(deps)
    end

    def as_yaml
      sorted_dependencies.map(&:as_yaml)
    end

    def to_yaml
      as_yaml.to_yaml
    end

    def to_s
      sorted_dependencies.map(&:to_s).join
    end

    def action_items
      sorted_dependencies.reject(&:approved).map(&:to_s).join
    end

    private

    def sorted_dependencies
      dependencies.sort_by(&:name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
license_finder-0.5.0 lib/license_finder/dependency_list.rb