gemsmith 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +13 -0
- data/README.rdoc +5 -0
- data/lib/gemsmith.rb +1 -0
- data/lib/gemsmith/cli.rb +21 -46
- data/lib/gemsmith/templates/README.rdoc.tmp +3 -2
- data/lib/gemsmith/templates/lib/gem/cli.rb.tmp +4 -10
- data/lib/gemsmith/templates/lib/generators/gem/install/USAGE.tmp +8 -0
- data/lib/gemsmith/templates/lib/generators/gem/upgrade/USAGE.tmp +8 -0
- data/lib/gemsmith/utilities.rb +14 -0
- data/lib/gemsmith/version.rb +1 -1
- metadata +7 -4
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
= v0.3.0
|
2
|
+
|
3
|
+
* Added Best Practices section to the README.
|
4
|
+
* Added the -e (edit) option for editing gem settings in default editor.
|
5
|
+
* Added Thor utilities for info and error messaging.
|
6
|
+
* Removed the classify and underscore methods since their equivalents are found in the Thor::Util class.
|
7
|
+
* Removed the print_version method.
|
8
|
+
* Added Rails generator USAGE documentation for the install and update generator templates.
|
9
|
+
* Removed excess shell calls from the CLI template.
|
10
|
+
* Added Thor::Actions to CLI class template.
|
11
|
+
* Added "Built with Gemsmith" to README template.
|
12
|
+
* Updated README template so that Gemfile mention is only provided when Rails is enabled.
|
13
|
+
|
1
14
|
= v0.2.0
|
2
15
|
|
3
16
|
* Fixed typo in upgrade generator doc.
|
data/README.rdoc
CHANGED
@@ -54,6 +54,7 @@ choose what options to define. Up to you. If no options are configured, then the
|
|
54
54
|
From the command line, type: gemsmith help
|
55
55
|
|
56
56
|
gemsmith -c, [create=GEM_NAME] # Create new gem.
|
57
|
+
gemsmith -e, [edit] # Edit gem settings in default editor (assumes $EDITOR environment variable).
|
57
58
|
gemsmith -h, [help] # Show this message.
|
58
59
|
gemsmith -v, [version] # Show version.
|
59
60
|
|
@@ -71,6 +72,10 @@ available to you via Bundler (i.e. rake -T):
|
|
71
72
|
rake install # Build and install <gem>-<version>.gem into system gems
|
72
73
|
rake release # Create tag v0.1.1 and build and push <gem>-<version>.gem to Rubygems
|
73
74
|
|
75
|
+
= Best Practices
|
76
|
+
|
77
|
+
1. Ensure your RUBYOPT env variable includes the -w option. {Read the reasons why here}[http://avdi.org/devblog/2011/06/23/how-ruby-helps-you-fix-your-broken-code/].
|
78
|
+
|
74
79
|
= Author
|
75
80
|
|
76
81
|
{Red Alchemist}[http://www.redalchemist.com]
|
data/lib/gemsmith.rb
CHANGED
data/lib/gemsmith/cli.rb
CHANGED
@@ -5,8 +5,9 @@ require "thor/actions"
|
|
5
5
|
module Gemsmith
|
6
6
|
class CLI < Thor
|
7
7
|
include Thor::Actions
|
8
|
+
include Gemsmith::Utilities
|
8
9
|
|
9
|
-
#
|
10
|
+
# Overwrites the Thor template source root.
|
10
11
|
def self.source_root
|
11
12
|
File.expand_path File.join(File.dirname(__FILE__), "templates")
|
12
13
|
end
|
@@ -14,26 +15,22 @@ module Gemsmith
|
|
14
15
|
# Initialize.
|
15
16
|
def initialize args = [], options = {}, config = {}
|
16
17
|
super
|
17
|
-
|
18
|
-
# Defaults.
|
19
|
-
@shell = shell
|
20
18
|
@settings_file = File.join ENV["HOME"], ".gemsmith", "settings.yml"
|
21
|
-
|
22
|
-
# Load and apply custom settings (if any).
|
23
19
|
load_settings
|
24
20
|
end
|
25
21
|
|
26
22
|
desc "-c, [create=GEM_NAME]", "Create new gem."
|
27
23
|
map "-c" => :create
|
28
|
-
method_option :bin, :aliases => "-b", :desc => "
|
29
|
-
method_option :rails, :aliases => "-R", :desc => "
|
24
|
+
method_option :bin, :aliases => "-b", :desc => "Add binary support.", :type => :boolean, :default => false
|
25
|
+
method_option :rails, :aliases => "-R", :desc => "Add Rails support.", :type => :boolean, :default => false
|
30
26
|
method_option :rspec, :aliases => "-r", :desc => "Add RSpec support.", :type => :boolean, :default => true
|
31
27
|
def create name
|
32
|
-
|
28
|
+
say
|
29
|
+
say_info "Creating gem..."
|
33
30
|
|
34
31
|
# Initialize options.
|
35
|
-
gem_name =
|
36
|
-
gem_class =
|
32
|
+
gem_name = Thor::Util.snake_case name
|
33
|
+
gem_class = Thor::Util.camel_case name
|
37
34
|
author_name = @settings[:author_name] || `git config user.name`.chomp || "TODO: Write full name here."
|
38
35
|
author_url = @settings[:author_url] || "TODO: Write home page URL here."
|
39
36
|
template_options = {
|
@@ -84,7 +81,9 @@ module Gemsmith
|
|
84
81
|
# Generators
|
85
82
|
empty_directory File.join(target_path, "lib", "generators", gem_name, "templates")
|
86
83
|
template File.join("lib", "generators", "gem", "install", "install_generator.rb.tmp"), File.join(target_path, "lib", "generators", gem_name, "install", "install_generator.rb"), template_options
|
84
|
+
template File.join("lib", "generators", "gem", "install", "USAGE.tmp"), File.join(target_path, "lib", "generators", gem_name, "install", "USAGE"), template_options
|
87
85
|
template File.join("lib", "generators", "gem", "upgrade", "upgrade_generator.rb.tmp"), File.join(target_path, "lib", "generators", gem_name, "upgrade", "upgrade_generator.rb"), template_options
|
86
|
+
template File.join("lib", "generators", "gem", "upgrade", "USAGE.tmp"), File.join(target_path, "lib", "generators", gem_name, "upgrade", "USAGE"), template_options
|
88
87
|
end
|
89
88
|
|
90
89
|
# RSpec (optional).
|
@@ -101,48 +100,29 @@ module Gemsmith
|
|
101
100
|
`git commit -a -n -m "Gemsmith skeleton created."`
|
102
101
|
end
|
103
102
|
|
104
|
-
|
103
|
+
say_info "Gem created."
|
104
|
+
say
|
105
|
+
end
|
106
|
+
|
107
|
+
desc "-e, [edit]", "Edit gem settings in default editor (assumes $EDITOR environment variable)."
|
108
|
+
map "-e" => :edit
|
109
|
+
def edit
|
110
|
+
`$EDITOR #{@settings_file}`
|
105
111
|
end
|
106
112
|
|
107
113
|
desc "-v, [version]", "Show version."
|
108
114
|
map "-v" => :version
|
109
115
|
def version
|
110
|
-
|
116
|
+
say "Gemsmith " + VERSION
|
111
117
|
end
|
112
118
|
|
113
119
|
desc "-h, [help]", "Show this message."
|
114
120
|
def help task = nil
|
115
|
-
|
121
|
+
say and super
|
116
122
|
end
|
117
123
|
|
118
124
|
private
|
119
125
|
|
120
|
-
# Transforms a camelcased string to an underscored equivalent (code stolen from the Ruby on Rails ActiveSupport underscore method).
|
121
|
-
# ==== Examples
|
122
|
-
# * "ExampleGem" -> "example_gem"
|
123
|
-
# * "SSLGem" -> "ssl_gem"
|
124
|
-
# ==== Parameters
|
125
|
-
# * +string+ - The string to underscore.
|
126
|
-
def underscore string
|
127
|
-
string = string.to_s.dup
|
128
|
-
string.gsub! /([A-Z]+)([A-Z][a-z])/, '\1_\2'
|
129
|
-
string.gsub! /([a-z\d])([A-Z])/, '\1_\2'
|
130
|
-
string.tr! "-", "_"
|
131
|
-
string.downcase
|
132
|
-
end
|
133
|
-
|
134
|
-
# Transforms a lowercased/camelcased to a proper class name (code inspired by the Ruby on Rails ActiveSupport classify method).
|
135
|
-
# ==== Examples
|
136
|
-
# * "example" -> "example"
|
137
|
-
# * "my_cool_gem" -> "MyCoolGem"
|
138
|
-
# ==== Parameters
|
139
|
-
# * +string+ - The string to classify.
|
140
|
-
def classify string
|
141
|
-
string = string.to_s.dup
|
142
|
-
string.gsub!(/(^.{1}|_.)/) {$1.upcase}
|
143
|
-
string.tr '_', ''
|
144
|
-
end
|
145
|
-
|
146
126
|
# Load settings.
|
147
127
|
def load_settings
|
148
128
|
if File.exists? @settings_file
|
@@ -150,14 +130,9 @@ module Gemsmith
|
|
150
130
|
settings = YAML::load_file @settings_file
|
151
131
|
@settings = settings.reject {|key, value| value.nil?}
|
152
132
|
rescue
|
153
|
-
|
133
|
+
say_error "Invalid settings: #{@settings_file}."
|
154
134
|
end
|
155
135
|
end
|
156
136
|
end
|
157
|
-
|
158
|
-
# Print version information.
|
159
|
-
def print_version
|
160
|
-
shell.say "Gemsmith " + VERSION
|
161
|
-
end
|
162
137
|
end
|
163
138
|
end
|
@@ -11,11 +11,11 @@
|
|
11
11
|
Type the following from the command line to install:
|
12
12
|
|
13
13
|
gem install <%= config[:gem_name] %>
|
14
|
-
|
14
|
+
<% if config[:rails] %>
|
15
15
|
Add the following to your Gemfile:
|
16
16
|
|
17
17
|
gem "<%= config[:gem_name] %>"
|
18
|
-
|
18
|
+
<% end %>
|
19
19
|
= Usage
|
20
20
|
|
21
21
|
= Author
|
@@ -30,3 +30,4 @@ Read the LICENSE for details.
|
|
30
30
|
= History
|
31
31
|
|
32
32
|
Read the CHANGELOG for details.
|
33
|
+
Built with Gemsmith[https://github.com/bkuhlmann/gemsmith].
|
@@ -1,8 +1,9 @@
|
|
1
|
-
require "yaml"
|
2
1
|
require "thor"
|
2
|
+
require "thor/actions"
|
3
3
|
|
4
4
|
module <%= config[:gem_class] %>
|
5
5
|
class CLI < Thor
|
6
|
+
include Thor::Actions
|
6
7
|
|
7
8
|
# Initialize.
|
8
9
|
def initialize args = [], options = {}, config = {}
|
@@ -12,19 +13,12 @@ module <%= config[:gem_class] %>
|
|
12
13
|
desc "-v, [version]", "Show version."
|
13
14
|
map "-v" => :version
|
14
15
|
def version
|
15
|
-
|
16
|
+
say "<%= config[:gem_class] %> " + VERSION
|
16
17
|
end
|
17
18
|
|
18
19
|
desc "-h, [help]", "Show this message."
|
19
20
|
def help task = nil
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# Print version information.
|
26
|
-
def print_version
|
27
|
-
shell.say "<%= config[:gem_class] %> " + VERSION
|
21
|
+
say and super
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Gemsmith
|
2
|
+
# Additional utilities for the command line.
|
3
|
+
module Utilities
|
4
|
+
# Prints info to the console.
|
5
|
+
def say_info message
|
6
|
+
say_status :info, message, :white
|
7
|
+
end
|
8
|
+
|
9
|
+
# Prints an error to the console.
|
10
|
+
def say_error message
|
11
|
+
say_status :error, message, :red
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/gemsmith/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemsmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brooke Kuhlmann
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-10 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: thor
|
@@ -97,11 +97,14 @@ files:
|
|
97
97
|
- lib/gemsmith/templates/lib/gem/active_record/instance_methods.rb.tmp
|
98
98
|
- lib/gemsmith/templates/lib/gem/cli.rb.tmp
|
99
99
|
- lib/gemsmith/templates/lib/gem/version.rb.tmp
|
100
|
+
- lib/gemsmith/templates/lib/generators/gem/install/USAGE.tmp
|
100
101
|
- lib/gemsmith/templates/lib/generators/gem/install/install_generator.rb.tmp
|
102
|
+
- lib/gemsmith/templates/lib/generators/gem/upgrade/USAGE.tmp
|
101
103
|
- lib/gemsmith/templates/lib/generators/gem/upgrade/upgrade_generator.rb.tmp
|
102
104
|
- lib/gemsmith/templates/rspec.tmp
|
103
105
|
- lib/gemsmith/templates/spec/gem_spec.rb.tmp
|
104
106
|
- lib/gemsmith/templates/spec/spec_helper.rb.tmp
|
107
|
+
- lib/gemsmith/utilities.rb
|
105
108
|
- lib/gemsmith/version.rb
|
106
109
|
homepage: http://www.redalchemist.com
|
107
110
|
licenses: []
|