Class: Bundler::Dependency

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

Instance Method Summary collapse

Methods inherited from Gem::Dependency

#encode_with

Methods included from ForcePlatform

#default_force_ruby_platform

Methods included from Gem::Dependency::FilterIgnoredSpecs

#matching_specs

Constructor Details

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

Returns a new instance of Dependency.


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

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

  @options = options
end

Instance Method Details

#autorequireObject


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

def autorequire
  return @autorequire if defined?(@autorequire)

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

#branchObject


43
44
45
46
47
# File 'lib/bundler/dependency.rb', line 43

def branch
  return @branch if defined?(@branch)

  @branch = @options["branch"]
end

#current_env?Boolean

Returns:

  • (Boolean)

121
122
123
124
125
126
127
128
129
130
# File 'lib/bundler/dependency.rb', line 121

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)

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

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

#envObject


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

def env
  return @env if defined?(@env)

  @env = @options["env"]
end

#expanded_platformsObject


105
106
107
# File 'lib/bundler/dependency.rb', line 105

def expanded_platforms
  @expanded_platforms ||= platforms.filter_map {|pl| CurrentRuby::PLATFORM_MAP[pl] }.flatten.uniq
end

#force_ruby_platformObject


81
82
83
84
85
# File 'lib/bundler/dependency.rb', line 81

def force_ruby_platform
  return @force_ruby_platform if defined?(@force_ruby_platform)

  @force_ruby_platform = @options["force_ruby_platform"]
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


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

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

#gemfileObject


75
76
77
78
79
# File 'lib/bundler/dependency.rb', line 75

def gemfile
  return @gemfile if defined?(@gemfile)

  @gemfile = @options["gemfile"]
end

#gemfile_dep?Boolean

Returns:

  • (Boolean)

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

def gemfile_dep?
  !gemspec_dev_dep?
end

#gemspec_dev_dep?Boolean

Returns:

  • (Boolean)

113
114
115
# File 'lib/bundler/dependency.rb', line 113

def gemspec_dev_dep?
  @gemspec_dev_dep ||= @options.fetch("gemspec_dev_dep", false)
end

#gitObject


31
32
33
34
35
# File 'lib/bundler/dependency.rb', line 31

def git
  return @git if defined?(@git)

  @git = @options["git"]
end

#githubObject


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

def github
  return @github if defined?(@github)

  @github = @options["github"]
end

#globObject


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

def glob
  return @glob if defined?(@glob)

  @glob = @options["glob"]
end

#groupsObject


15
16
17
# File 'lib/bundler/dependency.rb', line 15

def groups
  @groups ||= Array(@options["group"] || :default).map(&:to_sym)
end

#pathObject


25
26
27
28
29
# File 'lib/bundler/dependency.rb', line 25

def path
  return @path if defined?(@path)

  @path = @options["path"]
end

#platformsObject


61
62
63
# File 'lib/bundler/dependency.rb', line 61

def platforms
  @platforms ||= Array(@options["platforms"])
end

#refObject


49
50
51
52
53
# File 'lib/bundler/dependency.rb', line 49

def ref
  return @ref if defined?(@ref)

  @ref = @options["ref"]
end

#should_includeObject


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

def should_include
  @should_include ||= @options.fetch("should_include", true)
end

#should_include?Boolean

Returns:

  • (Boolean)

109
110
111
# File 'lib/bundler/dependency.rb', line 109

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

#sourceObject


19
20
21
22
23
# File 'lib/bundler/dependency.rb', line 19

def source
  return @source if defined?(@source)

  @source = @options["source"]
end

#specific?Boolean

Returns:

  • (Boolean)

145
146
147
148
149
# File 'lib/bundler/dependency.rb', line 145

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

#to_lockObject


139
140
141
142
143
# File 'lib/bundler/dependency.rb', line 139

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