class Microgem::Generator

Attributes

settings[R]

Public Class Methods

source_root() click to toggle source
# File lib/microgem/generator.rb, line 9
def self.source_root
  File.dirname(__FILE__) + '/../../template/'
end

Public Instance Methods

current_year() click to toggle source
# File lib/microgem/generator.rb, line 97
def current_year
  Date.today.year
end
generate() click to toggle source
# File lib/microgem/generator.rb, line 101
def generate
  directory ".", name,  exclude_pattern: %r<_spec.rb|Gemfile|\.github>
  if options[:specs]
    directory "spec", name + "/spec"
    directory ".github", name + "/.github"
    copy_file "Gemfile", name + "/Gemfile"
  end
end
github_name() click to toggle source
# File lib/microgem/generator.rb, line 85
def github_name
  options[:github] || name
end
info() click to toggle source
# File lib/microgem/generator.rb, line 89
def info
  options[:info]
end
last_name() click to toggle source
# File lib/microgem/generator.rb, line 77
def last_name
  path[%r<[^/]+$>]
end
load_settings() click to toggle source
# File lib/microgem/generator.rb, line 22
def load_settings
  dotfile_path = File.expand_path("~/.microgem")
  if File.exist? dotfile_path
    @settings = JSON.load File.read(dotfile_path)
  else
    @settings = {}
    say "This is your first microgem. Please tell me who you are!"
    guess_author = `git config user.name`.chomp
    guess_author = nil if guess_author.empty?
    guess_email  = `git config user.email`.chomp
    guess_email = nil if guess_email.empty?
    guess_github = `git config github.user`.chomp
    guess_github = nil if guess_github.empty?
    @settings["author"]  = ask("Your Name" + (guess_author ? " [#{guess_author}]:" : ":"))
    @settings["author"] = guess_author if @settings["author"].empty? && guess_author
    @settings["email"]   = ask("Your E-Mail" + (guess_email ? " [#{guess_email}]:" : ":")) || guess_email
    @settings["email"] = guess_email if @settings["email"].empty? && guess_email
    @settings["website"] = ask("Your Website:")
    @settings["github"]  = ask("Your GitHub Name" + (guess_github ? " [#{guess_github}]:" : ":")) || guess_github
    @settings["github"] = guess_github if @settings["github"].empty? && guess_github
    File.write dotfile_path, JSON.dump(@settings)
  end
end
module_def(index=nil) click to toggle source
    • -

# File lib/microgem/generator.rb, line 57
def module_def(index=nil)
  options[:class] && index && sub_modules.size == index + 1 ? "class" : "module"
end
module_name() click to toggle source
# File lib/microgem/generator.rb, line 61
def module_name
  name.gsub(/-[_-]*(?![_-]|$)/){ '::' }.gsub(/(^?[_-]+|(?<=:)|^)(.|$)/){ $2.upcase }
end
path() click to toggle source
# File lib/microgem/generator.rb, line 69
def path
  name.gsub(/-[_-]*(?![_-]|$)/){ '/' }
end
spec_name() click to toggle source
# File lib/microgem/generator.rb, line 73
def spec_name
  name.gsub(/-[_-]*(?![_-]|$)/){ '_' }
end
specs() click to toggle source
# File lib/microgem/generator.rb, line 81
def specs
  options[:specs]
end
sub_modules() click to toggle source
# File lib/microgem/generator.rb, line 65
def sub_modules
  module_name.split '::'
end
validate_name() click to toggle source
# File lib/microgem/generator.rb, line 46
def validate_name
  unless name =~ /\A[A-Z0-9_-]+\z/i
    raise ArgumentError, "invalid gem name: must only contain A-Z, 0-9, _ or -"
  end
  if module_name =~ /::[^A-Z]/
    raise ArgumentError, "invalid gem name: module names only allowed to start with A-Z"
  end
end
version() click to toggle source
# File lib/microgem/generator.rb, line 93
def version
  options[:version]
end