Module: Hoe::Bundler

Defined in:
lib/hoe/bundler.rb

Overview

Rake task to generate a bundler Gemfile based on your declared hoe dependencies.

* <tt>bundler:gemfile</tt>
* <tt>bundler:gemfile[https://rubygems.org/,false]</tt>

Constant Summary collapse

VERSION =

:nodoc:

"1.5.0"
DEFAULT_SOURCE =
'https://rubygems.org/'
DEFAULT_USE_GEMSPEC =
false

Instance Method Summary collapse

Instance Method Details

#define_bundler_tasksObject



14
15
16
17
18
19
20
21
22
# File 'lib/hoe/bundler.rb', line 14

def define_bundler_tasks
  desc "generate a bundler Gemfile from your Hoe.spec dependencies"
  task "bundler:gemfile", :source, :use_gemspec do |t,args|
    args.with_defaults(:source => DEFAULT_SOURCE, :use_gemspec => DEFAULT_USE_GEMSPEC)
    File.open("Gemfile","w") do |gemfile|
      gemfile.print hoe_bundler_contents(args)
    end
  end
end

#hoe_bundler_add_dependencies(deps, gemfile, postfix = nil) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/hoe/bundler.rb', line 48

def hoe_bundler_add_dependencies(deps, gemfile, postfix=nil)
  deps2 = {}
  deps.each do |name, version|
    version ||= ">=0"
    deps2[name] = version unless deps2.key?(name)
  end
  deps2.each do |name, version|
    output = [%Q{gem "#{name}"}]
    Array(version).each do |ver|
      output << %Q{"#{ver.gsub(/ /,'')}"}
    end
    gemfile.puts %Q{#{output.join(", ")}#{postfix}}
  end
  gemfile.puts
end

#hoe_bundler_contents(args = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/hoe/bundler.rb', line 24

def hoe_bundler_contents(args = {})
  args[:source] = DEFAULT_SOURCE unless args.has_key?(:source)
  args[:use_gemspec] = DEFAULT_USE_GEMSPEC unless args.has_key?(:use_gemspec)

  gemfile = StringIO.new
  gemfile.puts "# -*- ruby -*-"
  gemfile.puts
  gemfile.puts "# DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`."
  gemfile.puts
  gemfile.puts "source "<< ((args[:source] =~ /^https?:\/\//) ? "\"#{args[:source]}\"" : ":#{args[:source]}")
  gemfile.puts "gemspec" if args[:use_gemspec]
  gemfile.puts

  unless args[:use_gemspec]
    hoe_bundler_add_dependencies(self.extra_deps, gemfile)
    hoe_bundler_add_dependencies(self.extra_dev_deps, gemfile, ", :group => [:development, :test]")
  end

  gemfile.puts "# vim: syntax=ruby"

  gemfile.rewind
  gemfile.read
end