Class: Microgem::Generator
- Inherits:
-
Thor::Group
- Object
- Thor::Group
- Microgem::Generator
- Includes:
- Thor::Actions
- Defined in:
- lib/microgem/generator.rb
Instance Attribute Summary collapse
-
#settings ⇒ Object
readonly
Returns the value of attribute settings.
Class Method Summary collapse
Instance Method Summary collapse
- #current_year ⇒ Object
- #generate ⇒ Object
- #github_name ⇒ Object
- #info ⇒ Object
- #last_name ⇒ Object
- #load_settings ⇒ Object
-
#module_def(index = nil) ⇒ Object
-
-.
-
- #module_name ⇒ Object
- #path ⇒ Object
- #spec_name ⇒ Object
- #specs ⇒ Object
- #sub_modules ⇒ Object
- #validate_name ⇒ Object
- #version ⇒ Object
Instance Attribute Details
#settings ⇒ Object (readonly)
Returns the value of attribute settings.
20 21 22 |
# File 'lib/microgem/generator.rb', line 20 def settings @settings end |
Class Method Details
.source_root ⇒ Object
9 10 11 |
# File 'lib/microgem/generator.rb', line 9 def self.source_root File.dirname(__FILE__) + '/../../template/' end |
Instance Method Details
#current_year ⇒ Object
97 98 99 |
# File 'lib/microgem/generator.rb', line 97 def current_year Date.today.year end |
#generate ⇒ Object
101 102 103 104 105 106 107 108 |
# File 'lib/microgem/generator.rb', line 101 def generate directory ".", name, exclude_pattern: %r<_spec.rb|Gemfile|\.github> if [:specs] directory "spec", name + "/spec" directory ".github", name + "/.github" copy_file "Gemfile", name + "/Gemfile" end end |
#github_name ⇒ Object
85 86 87 |
# File 'lib/microgem/generator.rb', line 85 def github_name [:github] || name end |
#info ⇒ Object
89 90 91 |
# File 'lib/microgem/generator.rb', line 89 def info [:info] end |
#last_name ⇒ Object
77 78 79 |
# File 'lib/microgem/generator.rb', line 77 def last_name path[%r<[^/]+$>] end |
#load_settings ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/microgem/generator.rb', line 22 def load_settings dotfile_path = File.("~/.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!" = `git config user.name`.chomp = nil if .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" + ( ? " [#{}]:" : ":")) @settings["author"] = if @settings["author"].empty? && @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) ⇒ Object
-
-
-
57 58 59 |
# File 'lib/microgem/generator.rb', line 57 def module_def(index=nil) [:class] && index && sub_modules.size == index + 1 ? "class" : "module" end |
#module_name ⇒ Object
61 62 63 |
# File 'lib/microgem/generator.rb', line 61 def module_name name.gsub(/-[_-]*(?![_-]|$)/){ '::' }.gsub(/(^?[_-]+|(?<=:)|^)(.|$)/){ $2.upcase } end |
#path ⇒ Object
69 70 71 |
# File 'lib/microgem/generator.rb', line 69 def path name.gsub(/-[_-]*(?![_-]|$)/){ '/' } end |
#spec_name ⇒ Object
73 74 75 |
# File 'lib/microgem/generator.rb', line 73 def spec_name name.gsub(/-[_-]*(?![_-]|$)/){ '_' } end |
#specs ⇒ Object
81 82 83 |
# File 'lib/microgem/generator.rb', line 81 def specs [:specs] end |
#sub_modules ⇒ Object
65 66 67 |
# File 'lib/microgem/generator.rb', line 65 def sub_modules module_name.split '::' end |
#validate_name ⇒ Object
46 47 48 49 50 51 52 53 |
# 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 ⇒ Object
93 94 95 |
# File 'lib/microgem/generator.rb', line 93 def version [:version] end |