Class: Bundler::CLI::Inject
- Inherits:
-
Object
- Object
- Bundler::CLI::Inject
- Defined in:
- lib/bundler/cli/inject.rb
Instance Attribute Summary collapse
-
#gems ⇒ Object
readonly
Returns the value of attribute gems.
-
#group ⇒ Object
readonly
Returns the value of attribute group.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
-
#initialize(options, name, version) ⇒ Inject
constructor
A new instance of Inject.
- #run ⇒ Object
Constructor Details
permalink #initialize(options, name, version) ⇒ Inject
Returns a new instance of Inject.
6 7 8 9 10 11 12 13 |
# File 'lib/bundler/cli/inject.rb', line 6 def initialize(, name, version) @options = @name = name @version = version || last_version_number @group = [:group].split(",") unless [:group].nil? @source = [:source] @gems = [] end |
Instance Attribute Details
permalink #gems ⇒ Object (readonly)
Returns the value of attribute gems.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def gems @gems end |
permalink #group ⇒ Object (readonly)
Returns the value of attribute group.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def group @group end |
permalink #name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def name @name end |
permalink #options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def @options end |
permalink #source ⇒ Object (readonly)
Returns the value of attribute source.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def source @source end |
permalink #version ⇒ Object (readonly)
Returns the value of attribute version.
5 6 7 |
# File 'lib/bundler/cli/inject.rb', line 5 def version @version end |
Instance Method Details
permalink #run ⇒ Object
[View source]
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/bundler/cli/inject.rb', line 15 def run # The required arguments allow Thor to give useful feedback when the arguments # are incorrect. This adds those first two arguments onto the list as a whole. gems.unshift(source).unshift(group).unshift(version).unshift(name) # Build an array of Dependency objects out of the arguments deps = [] # when `inject` support addition of more than one gem, then this loop will # help. Currently this loop is running once. gems.each_slice(4) do |gem_name, gem_version, gem_group, gem_source| ops = Gem::Requirement::OPS.map {|key, _val| key } has_op = ops.any? {|op| gem_version.start_with? op } gem_version = "~> #{gem_version}" unless has_op deps << Bundler::Dependency.new(gem_name, gem_version, "group" => gem_group, "source" => gem_source) end added = Injector.inject(deps, ) if added.any? Bundler.ui.confirm "Added to Gemfile:" Bundler.ui.confirm(added.map do |d| name = "'#{d.name}'" requirement = ", '#{d.requirement}'" group = ", :group => #{d.groups.inspect}" if d.groups != Array(:default) source = ", :source => '#{d.source}'" unless d.source.nil? %(gem #{name}#{requirement}#{group}#{source}) end.join("\n")) else Bundler.ui.confirm "All gems were already present in the Gemfile" end end |