Sha256: 0b6cf112233303a9ee58ab2c7b008cd7019fb8e13092f7ca47b3346575c108d8

Contents?: true

Size: 1.83 KB

Versions: 2

Compression:

Stored size: 1.83 KB

Contents

require 'yaml'

module Licensed
  module Command
    class Verify
      attr_reader :config

      def initialize(config)
        @config = config
      end

      def approved?(dependency)
        @config.whitelisted?(dependency) ||
        @config.reviewed?(dependency)
      end

      def dependencies
        @dependencies ||= @config.sources.map(&:dependencies).flatten
      end

      def run
        @config.ui.info "Verifying licenses for #{dependencies.size} dependencies"

        @results = dependencies.map do |dependency|
          next if @config.ignored?(dependency)
          filename = @config.path.join("#{dependency["type"]}/#{dependency["name"]}.txt")

          warnings = []

          if File.exists?(filename)
            license = License.read(filename)

            if license["version"] != dependency["version"]
              warnings << "cached license data out of date"
            end
            warnings << "missing license text" if license.text.strip.empty?
            unless approved?(license)
              warnings << "license needs reviewed: #{license["license"]}."
            end
          else
            warnings << "missing license data"
          end

          if warnings.size > 0
            @config.ui.error("F", false)
            [filename, warnings]
          else
            @config.ui.confirm(".", false)
            nil
          end
        end.compact

        unless success?
          @config.ui.warn "\n\nWarnings:"

          @results.each do |filename, warnings|
            @config.ui.info "\n#{filename}:"
            warnings.each do |warning|
              @config.ui.error "  - #{warning}"
            end
          end
        end

        puts "\n#{dependencies.size} dependencies checked, #{@results.size} warnings found."
      end

      def success?
        @results.empty?
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
licensed-0.10.0 lib/licensed/command/verify.rb
licensed-0.6.0 lib/licensed/command/verify.rb