diff --git a/bin/mini-cutter b/bin/mini-cutter index 9b31f65..934419d 100755 --- a/bin/mini-cutter +++ b/bin/mini-cutter @@ -2,23 +2,29 @@ require 'erb' -class_name = ARGV[0] - class MyVars - def initialize(class_name) - @class_name = class_name + def initialize(class_name, class_name_underscore) + @class_name = class_name + @class_name_underscore = class_name_underscore end end +class_name = ARGV[0] +# Dirt simple way to convert 'AbcDef' to 'abc_def' +class_name_underscore = class_name.gsub(/(.)([A-Z])/, '\1_\2').downcase + +var_binding = MyVars.new(class_name, class_name_underscore).send(:binding) + Dir.glob("#{File.dirname(__FILE__)}/../templates/*.erb") do |file| erb_template = ERB.new File.open(file, 'r').read - erb_result = erb_template.result(MyVars.new(class_name).send(:binding)) + erb_result = erb_template.result(var_binding) - # Remove the path from the filename + # Remove the path from the file string file_name = File.basename file + # Remove .erb from the filename, and replace - # the 'class_name' from the file name - new_file_name = file_name.gsub(/.erb/, '').gsub(/class_name/, class_name) + # the 'class_name' placeholder from the file name + new_file_name = file_name.gsub(/.erb/, '').gsub(/class_name/, class_name_underscore) puts "Creating: #{new_file_name}" diff --git a/mini-cutter.gemspec b/mini-cutter.gemspec index 949c05d..7836057 100644 --- a/mini-cutter.gemspec +++ b/mini-cutter.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = 'mini-cutter' s.summary = 'Mini Cutter: create the boilerplate files needed for a mini-gem' s.description = 'Quick tool for building out a quick set of files needed to make a micro-gem' - s.version = '0.1.1' + s.version = '0.1.2' s.platform = Gem::Platform::RUBY s.files = Dir['bin/*'] + Dir['templates/*'] diff --git a/templates/README.md.erb b/templates/README.md.erb index fc64aa1..c349909 100644 --- a/templates/README.md.erb +++ b/templates/README.md.erb @@ -1 +1,16 @@ -Class: <%= @class_name %> +# <%= @class_name %> + +Description and usage: + + require '<%= @class_name_underscore %>' + <%= @class_name %>.new + +# Running the tests + +Install the rspec gem + + gem install rspec + +Run the spec + + rspec <%= @class_name_underscore %>_spec.rb diff --git a/templates/class_name.gemspec.erb b/templates/class_name.gemspec.erb index e69de29..10033a4 100644 --- a/templates/class_name.gemspec.erb +++ b/templates/class_name.gemspec.erb @@ -0,0 +1,18 @@ +Gem::Specification.new do |s| + s.name = '<%= @class_name_underscore %>' + s.summary = '' + s.description = '' + s.version = '0.0.1' + s.platform = Gem::Platform::RUBY + + s.files = ['<%= @class_name_underscore %>.rb'] + s.require_path = '.' + + s.author = '' + s.email = '' + s.homepage = '' + + s.test_file = '<%= @class_name_underscore %>_spec.rb' + s.add_development_dependency('rspec', ["~> 2.8"]) +end + diff --git a/templates/class_name.rb.erb b/templates/class_name.rb.erb index e69de29..cde563b 100644 --- a/templates/class_name.rb.erb +++ b/templates/class_name.rb.erb @@ -0,0 +1,3 @@ +class <%= @class_name %> + +end diff --git a/templates/class_name_spec.rb.erb b/templates/class_name_spec.rb.erb index e69de29..d716ff9 100644 --- a/templates/class_name_spec.rb.erb +++ b/templates/class_name_spec.rb.erb @@ -0,0 +1,7 @@ +require File.expand_path('<%= @class_name_underscore %>') + +describe <%= @class_name %> do + it 'should have tests' do + pending + end +end