Class: Bundler::Dependency

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

Constant Summary collapse

PLATFORM_MAP =
{
  :ruby     => Gem::Platform::RUBY,
  :ruby_18  => Gem::Platform::RUBY,
  :ruby_19  => Gem::Platform::RUBY,
  :ruby_20  => Gem::Platform::RUBY,
  :ruby_21  => Gem::Platform::RUBY,
  :ruby_22  => Gem::Platform::RUBY,
  :ruby_23  => Gem::Platform::RUBY,
  :ruby_24  => Gem::Platform::RUBY,
  :ruby_25  => Gem::Platform::RUBY,
  :ruby_26  => Gem::Platform::RUBY,
  :ruby_27  => Gem::Platform::RUBY,
  :ruby_30  => Gem::Platform::RUBY,
  :ruby_31  => Gem::Platform::RUBY,
  :mri      => Gem::Platform::RUBY,
  :mri_18   => Gem::Platform::RUBY,
  :mri_19   => Gem::Platform::RUBY,
  :mri_20   => Gem::Platform::RUBY,
  :mri_21   => Gem::Platform::RUBY,
  :mri_22   => Gem::Platform::RUBY,
  :mri_23   => Gem::Platform::RUBY,
  :mri_24   => Gem::Platform::RUBY,
  :mri_25   => Gem::Platform::RUBY,
  :mri_26   => Gem::Platform::RUBY,
  :mri_27   => Gem::Platform::RUBY,
  :mri_30   => Gem::Platform::RUBY,
  :mri_31   => Gem::Platform::RUBY,
  :rbx      => Gem::Platform::RUBY,
  :truffleruby => Gem::Platform::RUBY,
  :jruby    => Gem::Platform::JAVA,
  :jruby_18 => Gem::Platform::JAVA,
  :jruby_19 => Gem::Platform::JAVA,
  :mswin    => Gem::Platform::MSWIN,
  :mswin_18 => Gem::Platform::MSWIN,
  :mswin_19 => Gem::Platform::MSWIN,
  :mswin_20 => Gem::Platform::MSWIN,
  :mswin_21 => Gem::Platform::MSWIN,
  :mswin_22 => Gem::Platform::MSWIN,
  :mswin_23 => Gem::Platform::MSWIN,
  :mswin_24 => Gem::Platform::MSWIN,
  :mswin_25 => Gem::Platform::MSWIN,
  :mswin_26 => Gem::Platform::MSWIN,
  :mswin_27 => Gem::Platform::MSWIN,
  :mswin_30 => Gem::Platform::MSWIN,
  :mswin_31 => Gem::Platform::MSWIN,
  :mswin64    => Gem::Platform::MSWIN64,
  :mswin64_19 => Gem::Platform::MSWIN64,
  :mswin64_20 => Gem::Platform::MSWIN64,
  :mswin64_21 => Gem::Platform::MSWIN64,
  :mswin64_22 => Gem::Platform::MSWIN64,
  :mswin64_23 => Gem::Platform::MSWIN64,
  :mswin64_24 => Gem::Platform::MSWIN64,
  :mswin64_25 => Gem::Platform::MSWIN64,
  :mswin64_26 => Gem::Platform::MSWIN64,
  :mswin64_27 => Gem::Platform::MSWIN64,
  :mswin64_30 => Gem::Platform::MSWIN64,
  :mswin64_31 => Gem::Platform::MSWIN64,
  :mingw    => Gem::Platform::MINGW,
  :mingw_18 => Gem::Platform::MINGW,
  :mingw_19 => Gem::Platform::MINGW,
  :mingw_20 => Gem::Platform::MINGW,
  :mingw_21 => Gem::Platform::MINGW,
  :mingw_22 => Gem::Platform::MINGW,
  :mingw_23 => Gem::Platform::MINGW,
  :mingw_24 => Gem::Platform::MINGW,
  :mingw_25 => Gem::Platform::MINGW,
  :mingw_26 => Gem::Platform::MINGW,
  :mingw_27 => Gem::Platform::MINGW,
  :mingw_30 => Gem::Platform::MINGW,
  :mingw_31 => Gem::Platform::MINGW,
  :x64_mingw    => Gem::Platform::X64_MINGW,
  :x64_mingw_20 => Gem::Platform::X64_MINGW,
  :x64_mingw_21 => Gem::Platform::X64_MINGW,
  :x64_mingw_22 => Gem::Platform::X64_MINGW,
  :x64_mingw_23 => Gem::Platform::X64_MINGW,
  :x64_mingw_24 => Gem::Platform::X64_MINGW,
  :x64_mingw_25 => Gem::Platform::X64_MINGW,
  :x64_mingw_26 => Gem::Platform::X64_MINGW,
  :x64_mingw_27 => Gem::Platform::X64_MINGW,
  :x64_mingw_30 => Gem::Platform::X64_MINGW,
  :x64_mingw_31 => Gem::Platform::X64_MINGW,
}.freeze

Instance Attribute Summary collapse

Attributes inherited from Gem::Dependency

#source

Instance Method Summary collapse

Methods inherited from Gem::Dependency

#encode_with, #to_yaml_properties

Constructor Details

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

Returns a new instance of Dependency.


95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/bundler/dependency.rb', line 95

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"]
  @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"]

  @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

#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)

130
131
132
133
134
135
136
137
138
139
# File 'lib/bundler/dependency.rb', line 130

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)

141
142
143
144
145
146
# File 'lib/bundler/dependency.rb', line 141

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

#expanded_platformsObject


122
123
124
# File 'lib/bundler/dependency.rb', line 122

def expanded_platforms
  @expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.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


116
117
118
119
120
# File 'lib/bundler/dependency.rb', line 116

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

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

#should_include?Boolean

Returns:

  • (Boolean)

126
127
128
# File 'lib/bundler/dependency.rb', line 126

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

#specific?Boolean

Returns:

  • (Boolean)

154
155
156
157
158
# File 'lib/bundler/dependency.rb', line 154

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

#to_lockObject


148
149
150
151
152
# File 'lib/bundler/dependency.rb', line 148

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