Sha256: 6397dd1c838dcfb99abd00173da0b8764ced60ad107b271395733c28ffa8628b

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

require 'json'

module LicenseFinder
  class GoWorkspace < PackageManager
    Submodule = Struct.new :path, :revision

    def current_packages
      submodules.map do |submodule|
        import_path = Pathname.new(submodule.path).relative_path_from(project_src)
        GoPackage.from_dependency({'ImportPath' => import_path.to_s, 'Rev' => submodule.revision}, project_src)
      end
    end

    def package_path
      project_path.join('.envrc')
    end

    def active?
      active = package_path.exist? && IO.read(package_path).include?('GOPATH')
      active.tap { |is_active| logger.active self.class, is_active }
    end

    private

    def project_src
      project_path.join('src')
    end

    def submodules
      output = Dir.chdir(project_path) do |d|
        result = capture('git submodule status')
        raise 'git submodule status failed' unless result[1]
        result.first
      end
      output.lines.map do |gitmodule|
        columns = gitmodule.split.map(&:strip)
        Submodule.new File.join(project_path,columns[1]), columns[0]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
license_finder-2.1.0.rc2 lib/license_finder/package_managers/go_workspace.rb