Class: LicenseFinder::GoWorkspace

Inherits:
PackageManager show all
Defined in:
lib/license_finder/package_managers/go_workspace.rb

Defined Under Namespace

Classes: Submodule

Constant Summary collapse

ENVRC_REGEXP =
/GOPATH|GO15VENDOREXPERIMENT/

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PackageManager

command_exists?, #current_packages_with_relations, #detected_package_path, installed?, #prepare, prepare_command, takes_priority_over

Constructor Details

#initialize(options = {}) ⇒ GoWorkspace

Returns a new instance of GoWorkspace.



7
8
9
10
11
# File 'lib/license_finder/package_managers/go_workspace.rb', line 7

def initialize(options = {})
  super
  @full_version = options[:go_full_version]
  @strict_matching = options[:strict_matching]
end

Class Method Details

.package_management_commandObject



13
14
15
# File 'lib/license_finder/package_managers/go_workspace.rb', line 13

def self.package_management_command
  'go'
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


40
41
42
43
44
45
46
# File 'lib/license_finder/package_managers/go_workspace.rb', line 40

def active?
  return false if @strict_matching
  godep = LicenseFinder::GoDep.new(project_path: Pathname(project_path))
  # go workspace is only active if GoDep wasn't. There are some projects
  # that will use the .envrc and have a Godep folder as well.
  !!(!godep.active? && envrc_path && ENVRC_REGEXP.match(IO.read(envrc_path)))
end

#current_packagesObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/license_finder/package_managers/go_workspace.rb', line 17

def current_packages
  go_list_packages = go_list
  git_modules.map do |submodule|
    # We are filtering the non-standard packages because the word "net"
    # seems to be common that can give false positive when filtering the git submodules
    import_path = go_list_packages.select do |gp|
      submodule.install_path =~ /#{repo_name(gp)}$/
    end.first
    next unless import_path
    dependency_info = {
      'ImportPath' => repo_name(import_path),
      'Homepage' => repo_name(import_path),
      'InstallPath' => submodule.install_path,
      'Rev' => submodule.revision
    }
    GoPackage.from_dependency(dependency_info, nil, @full_version)
  end.compact
end

#possible_package_pathsObject



36
37
38
# File 'lib/license_finder/package_managers/go_workspace.rb', line 36

def possible_package_paths
  [envrc_path.dirname]
end