class Dependabot::Dependency
Attributes
name[R]
package_manager[R]
previous_requirements[R]
previous_version[R]
requirements[R]
subdependency_metadata[R]
version[R]
Public Class Methods
display_name_builder_for_package_manager(package_manager)
click to toggle source
# File lib/dependabot/dependency.rb, line 22 def self.display_name_builder_for_package_manager(package_manager) @display_name_builders[package_manager] end
name_normaliser_for_package_manager(package_manager)
click to toggle source
# File lib/dependabot/dependency.rb, line 30 def self.name_normaliser_for_package_manager(package_manager) @name_normalisers[package_manager] || ->(name) { name } end
new(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil, subdependency_metadata: [])
click to toggle source
# File lib/dependabot/dependency.rb, line 42 def initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil, subdependency_metadata: []) @name = name @version = version @requirements = requirements.map { |req| symbolize_keys(req) } @previous_version = previous_version @previous_requirements = previous_requirements&.map { |req| symbolize_keys(req) } @package_manager = package_manager unless top_level? || subdependency_metadata == [] @subdependency_metadata = subdependency_metadata&. map { |h| symbolize_keys(h) } end check_values end
production_check_for_package_manager(package_manager)
click to toggle source
# File lib/dependabot/dependency.rb, line 11 def self.production_check_for_package_manager(package_manager) production_check = @production_checks[package_manager] return production_check if production_check raise "Unsupported package_manager #{package_manager}" end
register_display_name_builder(package_manager, name_builder)
click to toggle source
# File lib/dependabot/dependency.rb, line 26 def self.register_display_name_builder(package_manager, name_builder) @display_name_builders[package_manager] = name_builder end
register_name_normaliser(package_manager, name_builder)
click to toggle source
# File lib/dependabot/dependency.rb, line 34 def self.register_name_normaliser(package_manager, name_builder) @name_normalisers[package_manager] = name_builder end
register_production_check(package_manager, production_check)
click to toggle source
# File lib/dependabot/dependency.rb, line 18 def self.register_production_check(package_manager, production_check) @production_checks[package_manager] = production_check end
Public Instance Methods
==(other)
click to toggle source
# File lib/dependabot/dependency.rb, line 102 def ==(other) other.instance_of?(self.class) && to_h == other.to_h end
appears_in_lockfile?()
click to toggle source
# File lib/dependabot/dependency.rb, line 76 def appears_in_lockfile? previous_version || (version && previous_requirements.nil?) end
display_name()
click to toggle source
# File lib/dependabot/dependency.rb, line 94 def display_name display_name_builder = self.class.display_name_builder_for_package_manager(package_manager) return name unless display_name_builder display_name_builder.call(name) end
eql?(other)
click to toggle source
# File lib/dependabot/dependency.rb, line 110 def eql?(other) self.==(other) end
hash()
click to toggle source
# File lib/dependabot/dependency.rb, line 106 def hash to_h.hash end
production?()
click to toggle source
# File lib/dependabot/dependency.rb, line 80 def production? return subdependency_production_check unless top_level? groups = requirements.flat_map { |r| r.fetch(:groups).map(&:to_s) } self.class. production_check_for_package_manager(package_manager). call(groups) end
subdependency_production_check()
click to toggle source
# File lib/dependabot/dependency.rb, line 90 def subdependency_production_check !subdependency_metadata&.all? { |h| h[:production] == false } end
to_h()
click to toggle source
# File lib/dependabot/dependency.rb, line 64 def to_h { "name" => name, "version" => version, "requirements" => requirements, "previous_version" => previous_version, "previous_requirements" => previous_requirements, "package_manager" => package_manager, "subdependency_metadata" => subdependency_metadata }.compact end
top_level?()
click to toggle source
# File lib/dependabot/dependency.rb, line 60 def top_level? requirements.any? end
Private Instance Methods
check_requirement_fields()
click to toggle source
# File lib/dependabot/dependency.rb, line 125 def check_requirement_fields requirement_fields = [requirements, previous_requirements].compact unless requirement_fields.all? { |r| r.is_a?(Array) } && requirement_fields.flatten.all? { |r| r.is_a?(Hash) } raise ArgumentError, "requirements must be an array of hashes" end required_keys = %i(requirement file groups source) optional_keys = %i(metadata) unless requirement_fields.flatten. all? { |r| required_keys.sort == (r.keys - optional_keys).sort } raise ArgumentError, "each requirement must have the following "\ "required keys: #{required_keys.join(', ')}."\ "Optionally, it may have the following keys: "\ "#{optional_keys.join(', ')}." end return if requirement_fields.flatten.none? { |r| r[:requirement] == "" } raise ArgumentError, "blank strings must not be provided as requirements" end
check_subdependency_metadata()
click to toggle source
# File lib/dependabot/dependency.rb, line 147 def check_subdependency_metadata return unless subdependency_metadata unless subdependency_metadata.is_a?(Array) && subdependency_metadata.all? { |r| r.is_a?(Hash) } raise ArgumentError, "subdependency_metadata must be an array of hashes" end end
check_values()
click to toggle source
# File lib/dependabot/dependency.rb, line 116 def check_values if [version, previous_version].any? { |v| v == "" } raise ArgumentError, "blank strings must not be provided as versions" end check_requirement_fields check_subdependency_metadata end
symbolize_keys(hash)
click to toggle source
# File lib/dependabot/dependency.rb, line 156 def symbolize_keys(hash) hash.keys.map { |k| [k.to_sym, hash[k]] }.to_h end