class Gemstrap::Generator
Public Instance Methods
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/gemstrap/generator.rb, line 22 def method_missing(method, *args, &block) return context[method] if context.include?(method) super end
run(args)
click to toggle source
# File lib/gemstrap/generator.rb, line 12 def run(args) options.merge!(args) puts "gemstrap: creating gem #{yellow(gem_name)}" say_args(args) generate! rescue => e puts e.message puts e.backtrace.join("\n") end
Private Instance Methods
context()
click to toggle source
# File lib/gemstrap/generator.rb, line 41 def context options[:templates] = Pathname.new(File.dirname(__FILE__)).join('template') options[:path] = Pathname.new('.').join(options[:gem_name]) options[:lib_path] = options[:path].join('lib') options[:spec_path] = options[:path].join('spec') options[:gem_module] = gem_name_to_module_name options end
copy_template(from, to)
click to toggle source
# File lib/gemstrap/generator.rb, line 84 def copy_template(from, to) cp(from, to) say_created(to) end
gem_name_to_module_name()
click to toggle source
# File lib/gemstrap/generator.rb, line 104 def gem_name_to_module_name name_parts = options[:gem_name].split('-').collect { |n| n.split('_') } name_parts.flatten.collect(&:capitalize).join end
generate!()
click to toggle source
# File lib/gemstrap/generator.rb, line 50 def generate! puts 'gemstrap: generating...' mkdir_p(path) generate_root_files generate_lib_files mkdir_p(spec_path) puts 'gemstrap: done!' end
generate_file(path, contents)
click to toggle source
# File lib/gemstrap/generator.rb, line 89 def generate_file(path, contents) IO.write(path, contents) say_created(path) end
generate_lib_files()
click to toggle source
# File lib/gemstrap/generator.rb, line 69 def generate_lib_files [lib_path, lib_path.join(gem_name)].each { |path| mkdir_p(path) } generate_file(lib_path.join("#{gem_name}.rb"), render_template('lib/root.rb.erb')) generate_file(lib_path.join("#{gem_name}/version.rb"), render_template('lib/gem_name/version.rb.erb')) end
generate_root_files()
click to toggle source
# File lib/gemstrap/generator.rb, line 59 def generate_root_files %w(Rakefile Gemfile).each do |file| copy_template(templates.join(file), path.join(file)) end copy_template(templates.join('gitignore'), path.join('.gitignore')) generate_file(path.join('README.md'), render_template('README.md.erb')) generate_file(path.join("#{gem_name}.gemspec"), render_template('gemspec.erb')) end
mkdir_p(path)
click to toggle source
Calls superclass method
# File lib/gemstrap/generator.rb, line 79 def mkdir_p(path) say_created(path) super(path) end
options()
click to toggle source
# File lib/gemstrap/generator.rb, line 29 def options @options ||= { gem_name: '', authors: [], authors_emails: [], description: '', summary: '', github_user: '', homepage: '' } end
render_template(template_path)
click to toggle source
# File lib/gemstrap/generator.rb, line 75 def render_template(template_path) Gemstrap::Template.render(templates.join(template_path), context) end
say_args(args)
click to toggle source
# File lib/gemstrap/generator.rb, line 94 def say_args(args) args.each do |k, v| puts " #{white(bold('using'))} #{k.to_s.ljust(16)} => #{v}" end end
say_created(item)
click to toggle source
# File lib/gemstrap/generator.rb, line 100 def say_created(item) puts " #{green(bold('create'))} #{item}" end