class Licensed::Sources::PNPM
Public Class Methods
Source
# File lib/licensed/sources/pnpm.rb, line 9 def self.require_matched_dependency_version true end
The PNPM
source requires matching reviewed or ignored dependencies on both name and version
Public Instance Methods
Source
# File lib/licensed/sources/pnpm.rb, line 15 def enabled? return false unless Licensed::Shell.tool_available?("pnpm") File.exist?(File.join(config.pwd, "pnpm-lock.yaml")) end
Returns true when pnpm is installed and a pnpm-lock.yaml file is found, otherwise false
Source
# File lib/licensed/sources/pnpm.rb, line 20 def enumerate_dependencies packages.flat_map do |package| versions = package.key?("versions") ? package["versions"] : [package["version"]] paths = package.key?("paths") ? package["paths"] : [package["path"]] versions.zip(paths).map do |version, path| name_with_version = "#{package["name"]}@#{version}" Dependency.new( name: name_with_version, version: version, path: path, metadata: { "type" => PNPM.type, "name" => package["name"], "summary" => package["description"], "homepage" => package["homepage"] } ) end end end
Source
# File lib/licensed/sources/pnpm.rb, line 58 def include_non_production? config.dig("pnpm", "production_only") == false end
Returns whether to include non production dependencies based on the licensed configuration settings
Source
# File lib/licensed/sources/pnpm.rb, line 51 def package_metadata_command args = %w(--json --long) args << "--prod" unless include_non_production? Licensed::Shell.execute("pnpm", "licenses", "list", *args, allow_failure: true) end
Returns the output from running ‘pnpm licenses list` to get package metadata
Source
# File lib/licensed/sources/pnpm.rb, line 43 def packages JSON.parse(package_metadata_command).values.flatten rescue JSON::ParserError => e message = "Licensed was unable to parse the output from 'pnpm licenses list'. JSON Error: #{e.message}" raise Licensed::Sources::Source::Error, message end
Returns package metadata returned from ‘pnpm licensed list`