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,
  :mri      => Gem::Platform::RUBY,
  :mri_18   => Gem::Platform::RUBY,
  :mri_19   => Gem::Platform::RUBY,
  :jruby    => Gem::Platform::JAVA,
  :mswin    => Gem::Platform::MSWIN,
  :mingw    => Gem::Platform::MINGW,
  :mingw_18 => Gem::Platform::MINGW,
  :mingw_19 => Gem::Platform::MINGW
}.freeze

Instance Attribute Summary collapse

Attributes inherited from Gem::Dependency

#source

Instance Method Summary collapse

Methods inherited from Gem::Dependency

#encode_with, #matches_spec?, #required_by, #requirement, #to_yaml_properties

Constructor Details

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

Returns a new instance of Dependency.



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/bundler/dependency.rb', line 25

def initialize(name, version, options = {}, &blk)
  super(name, version)

  @autorequire = nil
  @groups      = Array(options["group"] || :default).map { |g| g.to_sym }
  @source      = options["source"]
  @platforms   = Array(options["platforms"])
  @env         = options["env"]

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

Instance Attribute Details

#autorequireObject (readonly)

Returns the value of attribute autorequire.



7
8
9
# File 'lib/bundler/dependency.rb', line 7

def autorequire
  @autorequire
end

#groupsObject (readonly)

Returns the value of attribute groups.



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

def groups
  @groups
end

#platformsObject (readonly)

Returns the value of attribute platforms.



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

def platforms
  @platforms
end

Instance Method Details

#current_env?Boolean

Returns:

  • (Boolean)


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

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

#current_platform?Boolean

Returns:

  • (Boolean)


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

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

#gem_platforms(valid_platforms) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/bundler/dependency.rb', line 39

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

  platforms = []
  @platforms.each do |p|
    platform = PLATFORM_MAP[p]
    next unless valid_platforms.include?(platform)
    platforms |= [platform]
  end
  platforms
end

#should_include?Boolean

Returns:

  • (Boolean)


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

def should_include?
  current_env? && current_platform?
end

#to_lockObject



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/bundler/dependency.rb', line 71

def to_lock
  out = "  #{name}"

  unless requirement == Gem::Requirement.default
    reqs = requirement.requirements.map{|o,v| "#{o} #{v}" }
    out << " (#{reqs.join(', ')})"
  end

  out << '!' if source

  out << "\n"
end