Class: Dependabot::Dependency
- Inherits:
-
Object
- Object
- Dependabot::Dependency
- Defined in:
- lib/dependabot/dependency.rb
Instance Attribute Summary collapse
-
#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.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #appears_in_lockfile? ⇒ Boolean
-
#display_name ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/PerceivedComplexity.
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil) ⇒ Dependency
constructor
A new instance of Dependency.
-
#production? ⇒ Boolean
rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/PerceivedComplexity.
- #to_h ⇒ Object
- #top_level? ⇒ Boolean
Constructor Details
#initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil) ⇒ Dependency
Returns a new instance of Dependency.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/dependabot/dependency.rb', line 10 def initialize(name:, requirements:, package_manager:, version: nil, previous_version: nil, previous_requirements: nil) @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 check_values end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def name @name end |
#package_manager ⇒ Object (readonly)
Returns the value of attribute package_manager.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def package_manager @package_manager end |
#previous_requirements ⇒ Object (readonly)
Returns the value of attribute previous_requirements.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def previous_requirements @previous_requirements end |
#previous_version ⇒ Object (readonly)
Returns the value of attribute previous_version.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def previous_version @previous_version end |
#requirements ⇒ Object (readonly)
Returns the value of attribute requirements.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def requirements @requirements end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
7 8 9 |
# File 'lib/dependabot/dependency.rb', line 7 def version @version end |
Instance Method Details
#==(other) ⇒ Object
76 77 78 |
# File 'lib/dependabot/dependency.rb', line 76 def ==(other) other.instance_of?(self.class) && to_h == other.to_h end |
#appears_in_lockfile? ⇒ Boolean
38 39 40 |
# File 'lib/dependabot/dependency.rb', line 38 def appears_in_lockfile? previous_version || (version && previous_requirements.nil?) end |
#display_name ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/PerceivedComplexity
70 71 72 73 74 |
# File 'lib/dependabot/dependency.rb', line 70 def display_name return name unless %w(maven gradle).include?(package_manager) name.split(":").last end |
#eql?(other) ⇒ Boolean
84 85 86 |
# File 'lib/dependabot/dependency.rb', line 84 def eql?(other) self.==(other) end |
#hash ⇒ Object
80 81 82 |
# File 'lib/dependabot/dependency.rb', line 80 def hash to_h.hash end |
#production? ⇒ Boolean
rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/PerceivedComplexity
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/dependabot/dependency.rb', line 44 def production? return true unless top_level? groups = requirements.flat_map { |r| r.fetch(:groups).map(&:to_s) } case package_manager when "hex" then groups.empty? || groups.any? { |g| g.include?("prod") } when "npm_and_yarn" groups.include?("optionalDependencies") || groups.include?("dependencies") when "composer" then groups.include?("runtime") when "pip" groups.empty? || groups.include?("default") || groups.include?("dependencies") when "bundler" groups.empty? || groups.include?("runtime") || groups.include?("default") || groups.any? { |g| g.include?("prod") } else true end end |
#to_h ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/dependabot/dependency.rb', line 27 def to_h { "name" => name, "version" => version, "requirements" => requirements, "previous_version" => previous_version, "previous_requirements" => previous_requirements, "package_manager" => package_manager } end |
#top_level? ⇒ Boolean
23 24 25 |
# File 'lib/dependabot/dependency.rb', line 23 def top_level? requirements.any? end |