Class: Dependabot::Dependency
- Inherits:
-
Object
- Object
- Dependabot::Dependency
- Defined in:
- lib/dependabot/dependency.rb
Instance Attribute Summary collapse
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#package_manager ⇒ Object
readonly
Returns the value of attribute package_manager.
-
#previous_requirements ⇒ Object
readonly
Returns the value of attribute previous_requirements.
-
#previous_version ⇒ Object
readonly
Returns the value of attribute previous_version.
-
#requirements ⇒ Object
readonly
Returns the value of attribute requirements.
-
#subdependency_metadata ⇒ Object
readonly
Returns the value of attribute subdependency_metadata.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
- .display_name_builder_for_package_manager(package_manager) ⇒ Object
- .name_normaliser_for_package_manager(package_manager) ⇒ Object
- .production_check_for_package_manager(package_manager) ⇒ Object
- .register_display_name_builder(package_manager, name_builder) ⇒ Object
- .register_name_normaliser(package_manager, name_builder) ⇒ Object
- .register_production_check(package_manager, production_check) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#all_versions ⇒ Object
Returns all detected versions of the dependency.
- #appears_in_lockfile? ⇒ Boolean
- #display_name ⇒ Object
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#informational_only? ⇒ Boolean
This dependency is being indirectly updated by an update to another dependency.
-
#initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil, subdependency_metadata: [], removed: false, metadata: {}) ⇒ Dependency
constructor
A new instance of Dependency.
- #numeric_version ⇒ Object
- #production? ⇒ Boolean
- #removed? ⇒ Boolean
- #subdependency_production_check ⇒ Object
- #to_h ⇒ Object
- #top_level? ⇒ Boolean
Constructor Details
#initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil, subdependency_metadata: [], removed: false, metadata: {}) ⇒ Dependency
Returns a new instance of Dependency.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/dependabot/dependency.rb', line 42 def initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil, subdependency_metadata: [], removed: false, 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 = &. map { |h| symbolize_keys(h) } end @removed = removed @metadata = symbolize_keys( || {}) check_values end |
Instance Attribute Details
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def @metadata end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def name @name end |
#package_manager ⇒ Object (readonly)
Returns the value of attribute package_manager.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def package_manager @package_manager end |
#previous_requirements ⇒ Object (readonly)
Returns the value of attribute previous_requirements.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def previous_requirements @previous_requirements end |
#previous_version ⇒ Object (readonly)
Returns the value of attribute previous_version.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def previous_version @previous_version end |
#requirements ⇒ Object (readonly)
Returns the value of attribute requirements.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def requirements @requirements end |
#subdependency_metadata ⇒ Object (readonly)
Returns the value of attribute subdependency_metadata.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def @subdependency_metadata end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def version @version end |
Class Method Details
.display_name_builder_for_package_manager(package_manager) ⇒ Object
22 23 24 |
# 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) ⇒ Object
30 31 32 |
# File 'lib/dependabot/dependency.rb', line 30 def self.name_normaliser_for_package_manager(package_manager) @name_normalisers[package_manager] || ->(name) { name } end |
.production_check_for_package_manager(package_manager) ⇒ Object
11 12 13 14 15 16 |
# 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) ⇒ Object
26 27 28 |
# 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) ⇒ Object
34 35 36 |
# 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) ⇒ Object
18 19 20 |
# File 'lib/dependabot/dependency.rb', line 18 def self.register_production_check(package_manager, production_check) @production_checks[package_manager] = production_check end |
Instance Method Details
#==(other) ⇒ Object
129 130 131 |
# File 'lib/dependabot/dependency.rb', line 129 def ==(other) other.instance_of?(self.class) && to_h == other.to_h end |
#all_versions ⇒ Object
Returns all detected versions of the dependency. Only ecosystems that support this feature will return more than the current version.
115 116 117 118 119 120 |
# File 'lib/dependabot/dependency.rb', line 115 def all_versions all_versions = [:all_versions] return [version].compact unless all_versions all_versions.filter_map(&:version) end |
#appears_in_lockfile? ⇒ Boolean
87 88 89 |
# File 'lib/dependabot/dependency.rb', line 87 def appears_in_lockfile? previous_version || (version && previous_requirements.nil?) end |
#display_name ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/dependabot/dependency.rb', line 105 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) ⇒ Boolean
137 138 139 |
# File 'lib/dependabot/dependency.rb', line 137 def eql?(other) self.==(other) end |
#hash ⇒ Object
133 134 135 |
# File 'lib/dependabot/dependency.rb', line 133 def hash to_h.hash end |
#informational_only? ⇒ Boolean
This dependency is being indirectly updated by an update to another dependency. We don’t need to try and update it ourselves but want to surface it to the user in the PR.
125 126 127 |
# File 'lib/dependabot/dependency.rb', line 125 def informational_only? [:information_only] end |
#numeric_version ⇒ Object
70 71 72 |
# File 'lib/dependabot/dependency.rb', line 70 def numeric_version @numeric_version ||= version_class.new(version) if version && version_class.correct?(version) end |
#production? ⇒ Boolean
91 92 93 94 95 96 97 98 99 |
# File 'lib/dependabot/dependency.rb', line 91 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 |
#removed? ⇒ Boolean
66 67 68 |
# File 'lib/dependabot/dependency.rb', line 66 def removed? @removed end |
#subdependency_production_check ⇒ Object
101 102 103 |
# File 'lib/dependabot/dependency.rb', line 101 def subdependency_production_check !&.all? { |h| h[:production] == false } end |
#to_h ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/dependabot/dependency.rb', line 74 def to_h { "name" => name, "version" => version, "requirements" => requirements, "previous_version" => previous_version, "previous_requirements" => previous_requirements, "package_manager" => package_manager, "subdependency_metadata" => , "removed" => removed? ? true : nil }.compact end |
#top_level? ⇒ Boolean
62 63 64 |
# File 'lib/dependabot/dependency.rb', line 62 def top_level? requirements.any? end |