Class: Bundler::Dependency

Inherits:
Gem::Dependency show all
Defined in:
lib/bundler/dependency.rb

Constant Summary collapse

ALL_RUBY_VERSIONS =
(18..27).to_a.concat((30..34).to_a).freeze
PLATFORM_MAP =
{
  ruby: [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
  mri: [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
  rbx: [Gem::Platform::RUBY],
  truffleruby: [Gem::Platform::RUBY],
  jruby: [Gem::Platform::JAVA, [18, 19]],
  windows: [Gem::Platform::WINDOWS, ALL_RUBY_VERSIONS],
  # deprecated
  mswin: [Gem::Platform::MSWIN, ALL_RUBY_VERSIONS],
  mswin64: [Gem::Platform::MSWIN64, ALL_RUBY_VERSIONS - [18]],
  mingw: [Gem::Platform::MINGW, ALL_RUBY_VERSIONS],
  x64_mingw: [Gem::Platform::X64_MINGW, ALL_RUBY_VERSIONS - [18, 19]],
}.each_with_object({}) do |(platform, spec), hash|
  hash[platform] = spec[0]
  spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] }
end.freeze

Constants inherited from Gem::Dependency

Gem::Dependency::TYPES

Instance Attribute Summary collapse

Attributes inherited from Gem::Dependency

#name, #prerelease, #source

Instance Method Summary collapse

Methods inherited from Gem::Dependency

#<=>, #==, #=~, #encode_with, #force_ruby_platform, #hash, #identity, #inspect, #latest_version?, #match?, #matches_spec?, #matching_specs, #merge, #prerelease?, #pretty_print, #prioritizes_bundler?, #requirement, #requirements_list, #runtime?, #to_s, #to_spec, #to_specs, #to_yaml_properties, #type

Constructor Details

#initialize(name, version, options = {}, &blk) ⇒ Dependency

Returns a new instance of Dependency.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/bundler/dependency.rb', line 30

def initialize(name, version, options = {}, &blk)
  type = options["type"] || :runtime
  super(name, version, type)

  @autorequire    = nil
  @groups         = Array(options["group"] || :default).map(&:to_sym)
  @source         = options["source"]
  @path           = options["path"]
  @git            = options["git"]
  @github         = options["github"]
  @branch         = options["branch"]
  @ref            = options["ref"]
  @platforms      = Array(options["platforms"])
  @env            = options["env"]
  @should_include = options.fetch("should_include", true)
  @gemfile        = options["gemfile"]
  @force_ruby_platform = options["force_ruby_platform"] if options.key?("force_ruby_platform")

  @autorequire = Array(options["require"] || []) if options.key?("require")
end

Instance Attribute Details

#autorequireObject (readonly)

Returns the value of attribute autorequire.



9
10
11
# File 'lib/bundler/dependency.rb', line 9

def autorequire
  @autorequire
end

#branchObject (readonly)

Returns the value of attribute branch.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def branch
  @branch
end

#gemfileObject (readonly)

Returns the value of attribute gemfile.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def gemfile
  @gemfile
end

#gitObject (readonly)

Returns the value of attribute git.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def git
  @git
end

#githubObject (readonly)

Returns the value of attribute github.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def github
  @github
end

#groupsObject (readonly)

Returns the value of attribute groups.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def groups
  @groups
end

#pathObject (readonly)

Returns the value of attribute path.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def path
  @path
end

#platformsObject (readonly)

Returns the value of attribute platforms.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def platforms
  @platforms
end

#refObject (readonly)

Returns the value of attribute ref.



10
11
12
# File 'lib/bundler/dependency.rb', line 10

def ref
  @ref
end

Instance Method Details

#current_env?Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
82
83
84
# File 'lib/bundler/dependency.rb', line 75

def current_env?
  return true unless @env
  if @env.is_a?(Hash)
    @env.all? do |key, val|
      ENV[key.to_s] && (val.is_a?(String) ? ENV[key.to_s] == val : ENV[key.to_s] =~ val)
    end
  else
    ENV[@env.to_s]
  end
end

#current_platform?Boolean

Returns:

  • (Boolean)


86
87
88
89
90
91
# File 'lib/bundler/dependency.rb', line 86

def current_platform?
  return true if @platforms.empty?
  @platforms.any? do |p|
    Bundler.current_ruby.send("#{p}?")
  end
end

#expanded_platformsObject



63
64
65
# File 'lib/bundler/dependency.rb', line 63

def expanded_platforms
  @expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.flatten.uniq
end

#gem_platforms(valid_platforms) ⇒ Object

Returns the platforms this dependency is valid for, in the same order as passed in the ‘valid_platforms` parameter



56
57
58
59
60
61
# File 'lib/bundler/dependency.rb', line 56

def gem_platforms(valid_platforms)
  return RUBY_PLATFORM_ARRAY if force_ruby_platform
  return valid_platforms if @platforms.empty?

  valid_platforms.select {|p| expanded_platforms.include?(GemHelpers.generic(p)) }
end

#gemspec_dev_dep?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/bundler/dependency.rb', line 71

def gemspec_dev_dep?
  type == :development
end

#should_include?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/bundler/dependency.rb', line 67

def should_include?
  @should_include && current_env? && current_platform?
end

#specific?Boolean

Returns:

  • (Boolean)


99
100
101
102
103
# File 'lib/bundler/dependency.rb', line 99

def specific?
  super
rescue NoMethodError
  requirement != ">= 0"
end

#to_lockObject



93
94
95
96
97
# File 'lib/bundler/dependency.rb', line 93

def to_lock
  out = super
  out << "!" if source
  out
end