Sha256: a766559ff368bab4542af70402095dd46ea05c7d15d2839890c177fcae78632a
Contents?: true
Size: 1.56 KB
Versions: 29
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true module Licensed module Sources module Yarn module ClassMethods def type "yarn" end end def self.included(klass) klass.extend ClassMethods end def enabled? return unless Licensed::Shell.tool_available?("yarn") return unless self.class.version_requirement.satisfied_by?(yarn_version) config.pwd.join("package.json").exist? && config.pwd.join("yarn.lock").exist? end def yarn_version Gem::Version.new(Licensed::Shell.execute("yarn", "-v")) end # Returns a hash that maps all dependency names to their location on disk # by parsing every package.json file under node_modules. def dependency_paths @dependency_paths ||= [ *Dir.glob(config.pwd.join("**/node_modules/*/package.json")), *Dir.glob(config.pwd.join("**/node_modules/@*/*/package.json")) ].each_with_object({}) do |file, hsh| begin dirname = File.dirname(file) json = JSON.parse(File.read(file)) hsh["#{json["name"]}@#{json["version"]}"] = dirname rescue JSON::ParserError # don't crash execution if there is a problem parsing a package.json file # if the bad package.json file relates to a package that licensed should be reporting on # then this will still result in an error about a missing package end end end end end end require "licensed/sources/yarn/v1" require "licensed/sources/yarn/berry"
Version data entries
29 entries across 29 versions & 1 rubygems