Module: Bundler::Add

Defined in:
lib/bundler/add.rb,
lib/bundler/add/version.rb

Constant Summary collapse

VERSION =
'0.0.1'

Class Method Summary collapse

Class Method Details

.fetch_version(gem) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/bundler/add.rb', line 27

def fetch_version(gem)
  gemspec = JSON.parse(open("https://rubygems.org/api/v1/gems/#{gem}.json", &:read))

  gemspec['version']
rescue OpenURI::HTTPError
  '0.0.0'
end

.parse_options(argv) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/bundler/add.rb', line 35

def parse_options(argv)
  groups = []
  req = nil

  opts = OptionParser.new
  opts.on('-g GROUP', '--group GROUP', Array) do |group|
    groups = group
  end
  gems = opts.parse!(argv)

  {
    gems: gems,
    groups: groups
  }
end

.show_define(gem, options) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/bundler/add.rb', line 18

def show_define(gem, options)
  if options[:groups].any?
    groups = options[:groups]
    puts %Q{gem '#{gem}', '~> #{fetch_version(gem)}', group: [#{groups.map{|g| g.sub(/^/, ':') }.join(', ')}]}
  else
    puts %Q{gem '#{gem}', '~> #{fetch_version(gem)}'}
  end
end

.show_defines(argv) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/bundler/add.rb', line 10

def show_defines(argv)
  options = parse_options(argv)

  options[:gems].each do |gem|
    show_define(gem, options)
  end
end