Sha256: 65bc9ba7e92bb6cf91d9cc106489504407b9df9a1190e71232f46bd874362820

Contents?: true

Size: 1.56 KB

Versions: 8

Compression:

Stored size: 1.56 KB

Contents

require 'license_finder/shared_helpers/common_path'
require 'json'

module LicenseFinder
  class Govendor < PackageManager
    def possible_package_paths
      [project_path.join('vendor', 'vendor.json')]
    end

    def current_packages
      file = File.read(detected_package_path)
      packages = packages_from_json(file)
      packages.map do |package|
        GoPackage.from_dependency({
                                    'ImportPath' => package[:path],
                                    'InstallPath' => project_path.join('vendor', package[:path]),
                                    'Rev' => package[:sha]
                                  }, nil, true)
      end
    end

    def self.takes_priority_over
      Go15VendorExperiment
    end

    def self.package_management_command
      'govendor'
    end

    def self.prepare_command
      'govendor sync'
    end

    private

    def packages_from_json(json_string)
      data = JSON.parse(json_string)
      packages = data['package']

      packages_by_sha = {}

      packages.each do |package|
        package_path = package['path']
        package_revision = package['revision']
        if packages_by_sha[package_revision].nil?
          packages_by_sha[package_revision] = [package_path]
        else
          packages_by_sha[package_revision] << package_path
        end
      end

      result = []
      packages_by_sha.each do |sha, paths|
        common_paths = CommonPathHelper.shortest_common_paths(paths)
        common_paths.each { |cp| result << { sha: sha, path: cp } }
      end

      result
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
license_finder-5.4.1 lib/license_finder/package_managers/govendor.rb
license_finder-5.4.0 lib/license_finder/package_managers/govendor.rb
license_finder-5.3.0 lib/license_finder/package_managers/govendor.rb
license_finder-5.2.3 lib/license_finder/package_managers/govendor.rb
license_finder-5.2.1 lib/license_finder/package_managers/govendor.rb
license_finder-5.2.0 lib/license_finder/package_managers/govendor.rb
license_finder-5.1.1 lib/license_finder/package_managers/govendor.rb
license_finder-5.1.0 lib/license_finder/package_managers/govendor.rb