Class: StrongVersions::Dependency

Inherits:
Object
  • Object
show all
Defined in:
lib/strong_versions/dependency.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency, lockfile = nil) ⇒ Dependency

Returns a new instance of Dependency.



8
9
10
11
12
13
14
15
# File 'lib/strong_versions/dependency.rb', line 8

def initialize(dependency, lockfile = nil)
  @dependency = dependency
  @name = dependency.name
  @errors = []
  @lockfile = lockfile || default_lockfile

  versions.each { |operator, version| validate_version(operator, version) }
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



6
7
8
# File 'lib/strong_versions/dependency.rb', line 6

def errors
  @errors
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/strong_versions/dependency.rb', line 6

def name
  @name
end

Instance Method Details

#definitionObject



43
44
45
46
47
48
49
# File 'lib/strong_versions/dependency.rb', line 43

def definition
  versions.map do |operator, version|
    next t('version_not_specified') if operator == '>=' && version.zero?

    "'#{operator} #{version}'"
  end.join(', ')
end

#gemfileObject



21
22
23
# File 'lib/strong_versions/dependency.rb', line 21

def gemfile
  Pathname.new(@dependency.gemfile) if @dependency.respond_to?(:gemfile)
end

#gemspecObject



25
26
27
# File 'lib/strong_versions/dependency.rb', line 25

def gemspec
  Pathname.new(gemspec_path) unless gemspec_path.nil?
end

#suggested_definition(subject = :gemfile) ⇒ Object



37
38
39
40
41
# File 'lib/strong_versions/dependency.rb', line 37

def suggested_definition(subject = :gemfile)
  guards = guard_versions.map { |op, version| "'#{op} #{version}'" }
  constraints = [suggested_version.suggestion, *guards].join(', ')
  send(:"suggested_#{subject}_definition", constraints)
end

#suggested_versionObject



33
34
35
# File 'lib/strong_versions/dependency.rb', line 33

def suggested_version
  GemVersion.new(GemVersion.new(lockfile_version).version_string)
end

#to_sObject



17
18
19
# File 'lib/strong_versions/dependency.rb', line 17

def to_s
  "#<StrongVersions::Dependency name=#{@dependency.name}>"
end

#updatable?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/strong_versions/dependency.rb', line 51

def updatable?
  !valid? && !suggested_version.missing? && !path_source?
end

#valid?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/strong_versions/dependency.rb', line 29

def valid?
  @errors.empty?
end