Sha256: abc138d793475674ac77ef4a24ccdaf867a5d9fdd500736917854d3fecd2c00f

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

require 'json'
require 'license_finder/package'

module LicenseFinder
  class Bower

    def self.current_packages
      return @packages if @packages

      output = `bower list --json`

      json = JSON(output)

      @packages = json.fetch("dependencies",[]).map do |package|
        package = package[1]
        pkg_meta = package.fetch("pkgMeta", Hash.new)

        Package.new(OpenStruct.new(
          :name => pkg_meta.fetch("name", nil),
          :version => pkg_meta.fetch("version", nil),
          :full_gem_path => package.fetch("canonicalDir", nil),
          :license => self.harvest_license(pkg_meta),
          :summary => pkg_meta.fetch("description", nil),
          :description => pkg_meta.fetch("readme", nil)
        ))
      end
    end

    def self.has_package_file?
      File.exists?(package_path)
    end

    private

    def self.package_path
      Pathname.new('bower.json').expand_path
    end

    def self.harvest_license(package)
      license = package.fetch("licenses", []).first

      if license.is_a? Hash
        license = license.fetch("type", nil)
      end

      if license.nil?
        license = package.fetch("license", nil)

        if license.is_a? Hash
          license = license.fetch("type", nil)
        end
      end

      license
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
license_finder-0.9.4-java lib/license_finder/bower.rb
license_finder-0.9.4 lib/license_finder/bower.rb