Sha256: 4df882241e17fb8166b0d1c04f739ea0aa373a42e2aafbfbb2c406c6a1fdba3c

Contents?: true

Size: 1.57 KB

Versions: 4

Compression:

Stored size: 1.57 KB

Contents

require 'csv'

module LicenseFinder
  class CsvReport < Report
    COMMA_SEP =  ","
    AVAILABLE_COLUMNS = %w[name version authors licenses approved summary description homepage install_path package_manager groups]
    MISSING_DEPENDENCY_TEXT = "This package is not installed. Please install to determine licenses."

    def initialize(dependencies, options)
      super
      @columns = Array(options[:columns]) & self.class::AVAILABLE_COLUMNS
    end

    def to_s
      CSV.generate(col_sep: self.class::COMMA_SEP) do |csv|
        sorted_dependencies.each do |s|
          csv << format_dependency(s)
        end
      end
    end

    private

    def format_dependency(dep)
      @columns.map do |column|
        send("format_#{column}", dep)
      end
    end

    def format_name(dep)
      dep.name
    end

    def format_version(dep)
      dep.version
    end

    def format_authors(dep)
      dep.authors.to_s.strip
    end

    def format_homepage(dep)
      dep.homepage
    end

    def format_licenses(dep)
      if dep.missing?
        MISSING_DEPENDENCY_TEXT
      else
        dep.licenses.map(&:name).join(self.class::COMMA_SEP)
      end
    end

    def format_approved(dep)
      dep.approved? ? "Approved" : "Not approved"
    end

    def format_summary(dep)
      dep.summary.to_s.strip
    end

    def format_description(dep)
      dep.description.to_s.strip
    end

    def format_install_path(dep)
      dep.install_path
    end

    def format_package_manager(dep)
      dep.package_manager
    end

    def format_groups(dep)
      dep.groups.join(",")
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
license_finder-2.1.2 lib/license_finder/reports/csv_report.rb
license_finder-2.1.1 lib/license_finder/reports/csv_report.rb
license_finder-2.1.0 lib/license_finder/reports/csv_report.rb
license_finder-2.1.0.rc9 lib/license_finder/reports/csv_report.rb