module MakeGem
Constants
- DESCRIPTION
- VERSION
Public Class Methods
make_gem(args)
click to toggle source
# File lib/make_gem.rb, line 10 def self.make_gem(args) puts "make gem utility version: #{::MakeGem::VERSION}" # Check parameter and extract data. if args.empty? || args[0] == "--help" puts "Usage:", " make_gem your_gem_name {-d}", " -d adds debug info.", " make_gem --help", "" exit end gem_name = args[0] if gem_name !~ /\A[a-z][a-z0-9_]*\z/ puts "ERROR: Invalid gem name: #{gem_name.inspect}", "" exit end $debug = (args[1] == "-d") class_name = gem_name.split("_").map(&:capitalize).join user_name = (%x{git config --global user.name}).chomp user_email = (%x{git config --global user.email}).chomp here = Dir.pwd + "/" there = here + gem_name + "/" make_gem = File.expand_path(File.dirname(__FILE__)) + "/" template = make_gem + "template/" bundler = Bundler::VERSION.partition(/\d\.\d+/)[1] if File.exists?(there) puts "ERROR: The folder #{there} already exists." exit end evaluator = binding puts "Creating gem = #{gem_name}" puts "Module name = #{class_name}" if $debug puts "User name = #{user_name.inspect}" puts "User email = #{user_email.inspect}" puts "Current folder = #{here}" if $debug puts "Target folder = #{there}" puts "Gem folder = #{make_gem}" if $debug puts "Template folder = #{template}" if $debug puts "Bundler version = #{bundler}" if $debug puts # Verify that we may proceed. print "Proceed? (y/n): " exit unless STDIN.gets[0] == "y" # Process the request. puts "0. Establishing starting point." %x{bundle gem #{gem_name}} Dir.chdir(gem_name) %x{git commit -m "Initial commit from bundler."} puts "1. Removing extraneous files." %x{git rm .travis.yml} %x{git rm bin/console} %x{git rm bin/setup} %x{git commit -m "Fix phase 1"} puts "2. Rename the rake file." %x{git mv Rakefile rakefile.rb\n} %x{git commit -m "Fix phase 2"} puts "3. Fix up the code files." MakeGem.process(template + "version.erb", there + "lib/" + gem_name + "/version.rb", evaluator) MakeGem.process(template + "gem_main.erb", there + "lib/" + gem_name + ".rb", evaluator) %x{git add .} %x{git commit -m "Fix phase 3"} puts "4. Fix up the test files." %x{git rm test/test_helper.rb} MakeGem.process(template + "gem_test.erb", there + "test/" + gem_name + "_test.rb", evaluator) %x{git add .} %x{git commit -m "Fix phase 4"} puts "5. Fix up the readme file." MakeGem.process(template + "README.erb", there + "README.md", evaluator) %x{git add .} %x{git commit -m "Fix phase 5"} puts "6. Fix up the gem specification file." MakeGem.process(template + "gem_spec.erb", there + gem_name + ".gemspec", evaluator) %x{git add .} %x{git commit -m "Fix phase 6"} puts "7. Fix up the rake file." MakeGem.process(template + "rakefile.erb", there + "rakefile.rb", evaluator) %x{git add .} %x{git commit -m "Fix phase 7"} puts puts "To connect to github, use:" puts "git remote add origin https://github.com/#{user_name}/#{gem_name}.git" puts "git push -u origin master" puts puts "** Done. **" end
process(src, dst, evaluator)
click to toggle source
Process a file.
# File lib/make_gem/process.rb, line 4 def self.process(src, dst, evaluator) puts " #{File.basename(src)} => #{dst}" if $debug IO.binwrite(dst, ERB.new(IO.read(src)).result(evaluator)) end