Sha256: 5eaaca96e454362ed5f4b6eaf892b705569160ff376540bb3a35fe01970a5edf

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 KB

Contents

module Licensed
  module Command
    class Cache
      attr_reader :config

      def initialize(config)
        @config = config
      end

      def run(force: false)
        @config.sources.each do |source|
          @config.ui.info "Caching licenses for #{source.type} dependencies:"

          source.dependencies.each do |dependency|
            next if @config.ignored?(dependency)

            filename = @config.path.join("#{source.type}/#{dependency["name"]}.txt")

            if File.exist?(filename)
              license = Licensed::License.read(filename)

              # Version did not change, no need to re-cache
              if !force && dependency["version"] == license["version"]
                @config.ui.info "  Using #{dependency["name"]} (#{dependency["version"]})"
                next
              end
            end

            @config.ui.info "  Caching #{dependency["name"]} (#{dependency["version"]})"

            dependency.detect_license!
            dependency.save(filename)
          end

          # Clean up dependencies that have been removed
          names = source.dependencies.map do |dependency|
            dependency["name"] unless @config.ignored?(dependency)
          end.compact

          Dir.glob(@config.path.join("#{source.type}/*.txt")).each do |file|
            FileUtils.rm(file) unless names.include?(File.basename(file, ".txt"))
          end
        end

        @config.ui.confirm "License caching complete!"
        @config.sources.each do |source|
          @config.ui.confirm "* #{source.type} dependencies: #{source.dependencies.size}"
        end
      end

      def success?
        true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
licensed-0.6.0 lib/licensed/command/cache.rb