Sha256: d3cc6682582bf0acb785ba059c96c61a843ab9586730bbd55a9080b48c7ad8a2

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 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:"

          dependencies(source).each do |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 = dependencies(source).map { |d| d["name"] }

          license_source_path = @config.path.join(source.type)
          Dir.glob(license_source_path.join("**/*.txt")).each do |file|
            file_path = Pathname.new(file)
            relative_path = file_path.relative_path_from(license_source_path).to_s
            FileUtils.rm(file) unless names.include?(relative_path.chomp(".txt"))
          end
        end

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

      def dependencies(source)
        source.dependencies.select { |d| !@config.ignored?(d) }
      end

      def success?
        true
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
licensed-0.11.1 lib/licensed/command/cache.rb
licensed-0.11.0 lib/licensed/command/cache.rb