gemsmith 0.5.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +24 -8
- data/README.rdoc +24 -17
- data/bin/gemsmith +2 -1
- data/gemsmith.gemspec +4 -2
- data/lib/gemsmith.rb +0 -1
- data/lib/gemsmith/cli.rb +61 -36
- data/lib/gemsmith/templates/README.rdoc.tmp +5 -1
- data/lib/gemsmith/templates/gem.gemspec.tmp +13 -8
- data/lib/gemsmith/templates/lib/gem.rb.tmp +1 -1
- data/lib/gemsmith/templates/lib/gem/action_controller/class_methods.rb.tmp +1 -2
- data/lib/gemsmith/templates/lib/gem/action_controller/instance_methods.rb.tmp +1 -1
- data/lib/gemsmith/templates/lib/gem/action_view/instance_methods.rb.tmp +1 -1
- data/lib/gemsmith/templates/lib/gem/active_record/class_methods.rb.tmp +1 -2
- data/lib/gemsmith/templates/lib/gem/active_record/instance_methods.rb.tmp +1 -1
- data/lib/gemsmith/templates/lib/gem/cli.rb.tmp +3 -0
- data/lib/gemsmith/templates/lib/generators/gem/install/install_generator.rb.tmp +1 -1
- data/lib/gemsmith/templates/lib/generators/gem/upgrade/upgrade_generator.rb.tmp +1 -1
- data/lib/gemsmith/version.rb +1 -1
- data/spec/settings_spec.rb +71 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/settings.yml +12 -0
- metadata +28 -36
- data/lib/gemsmith/utilities.rb +0 -14
data/CHANGELOG.rdoc
CHANGED
@@ -1,12 +1,28 @@
|
|
1
|
+
= v1.0.0
|
2
|
+
|
3
|
+
* Upgraded to Ruby 1.9 and added Ruby 1.9 requirements.
|
4
|
+
* Upgraded Rails defaults to 3.1.x.
|
5
|
+
* Renamed ActionController and ActiveRecord class methods templates to be acts_as_* instead of is_*_enhanced.
|
6
|
+
* Changed gem specifications to use singular form of author and email.
|
7
|
+
* Added a gem_url setting (which is different from the author_url but does default to it).
|
8
|
+
* Added a Company header to the README template.
|
9
|
+
* Added the MIT license to the gemspec template.
|
10
|
+
* Added the post_install_message option for adding custom messages to gem install output.
|
11
|
+
* Simplified all TODO messages in the templates.
|
12
|
+
* Added Thor+ gem requirement.
|
13
|
+
* Removed the Utilities module and replaced all info and error messages with Thor+ actions.
|
14
|
+
* Added requirements and includes for the Thor+ gem when generating binary-enabled gem skeletons.
|
15
|
+
* Added the YAML requirement to the CLI template.
|
16
|
+
|
1
17
|
= v0.5.0
|
2
18
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
19
|
+
* Fixed bug with wrong definition of ActionView instance method include for main gem template.
|
20
|
+
* Changed the ActionView template behavior so that instance methods are auto-included.
|
21
|
+
* Renamed the execute methods for the install and upgrade generators to install and upgrade respectively.
|
22
|
+
* Added Rails version options. Default: 3.0.0.
|
23
|
+
* Added Ruby version option. Default: 1.9.2.
|
24
|
+
* Made the module namespace optional when building gems specifically for Rails.
|
25
|
+
* Relabeled the TODO helper text for all templates.
|
10
26
|
|
11
27
|
= v0.4.0
|
12
28
|
|
@@ -50,4 +66,4 @@
|
|
50
66
|
|
51
67
|
= v0.1.0
|
52
68
|
|
53
|
-
* Initial version.
|
69
|
+
* Initial version.
|
data/README.rdoc
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
= Overview
|
2
2
|
|
3
3
|
Gemsmith allows you to easily craft new gems via the command line with custom settings (if desired). If you are
|
4
|
-
a fan of Bundler[https://github.com/carlhuda/bundler], then you'll appreciate the
|
5
|
-
is essentially an enhanced version of Bundler's gem building capabilities.
|
4
|
+
a fan of Bundler[https://github.com/carlhuda/bundler], then you'll appreciate the additional capabilities of this
|
5
|
+
gem. Gemsmith is essentially an enhanced version of Bundler's gem building capabilities.
|
6
6
|
|
7
7
|
= Features
|
8
8
|
|
9
9
|
* Builds a gem skeleton with Bundler functionality in mind.
|
10
|
-
* Allows for common settings that you can
|
10
|
+
* Allows for common settings that you can apply to new gem creations.
|
11
11
|
* Supports binary skeletons with Thor[https://github.com/wycats/thor] command line functionality.
|
12
12
|
* Supports {Ruby on Rails}[http://rubyonrails.org] skeletons.
|
13
13
|
* Supports RSpec[http://rspec.info] test skeletons.
|
@@ -15,8 +15,10 @@ is essentially an enhanced version of Bundler's gem building capabilities.
|
|
15
15
|
|
16
16
|
= Requirements
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
1. Basic understanding of gem building.
|
19
|
+
2. A UNIX-based system.
|
20
|
+
3. {Ruby 1.9.x}[http://www.ruby-lang.org]
|
21
|
+
4. Bundler[https://github.com/carlhuda/bundler]
|
20
22
|
|
21
23
|
= Setup
|
22
24
|
|
@@ -24,30 +26,31 @@ Type the following from the command line to install:
|
|
24
26
|
|
25
27
|
gem install gemsmith
|
26
28
|
|
27
|
-
You can
|
29
|
+
You can configure common settings for future gem builds by creating the following file:
|
28
30
|
|
29
31
|
~/.gemsmith/settings.yml
|
30
32
|
|
31
|
-
...
|
33
|
+
...using the following settings (for example):
|
32
34
|
|
33
35
|
---
|
34
36
|
:author_name: Brooke Kuhlmann
|
35
37
|
:author_email: brooke@redalchemist.com
|
36
38
|
:author_url: http://www.redalchemist.com
|
37
|
-
:company_name: Red
|
38
|
-
:company_url: http://www.redalchemist.com
|
39
|
+
:company_name: Red Alchemist
|
39
40
|
|
40
|
-
|
41
|
+
If no options are configured, then the defaults are as follows:
|
41
42
|
|
42
43
|
gem_platform: Gem::Platform::RUBY
|
43
|
-
author_name: <git
|
44
|
+
author_name: <git name>
|
44
45
|
author_email: <git email>
|
45
|
-
author_url:
|
46
|
+
author_url: https://www.unknown.com
|
47
|
+
gem_url: <author URL>
|
46
48
|
company_name: <author name>
|
47
49
|
company_url: <author URL>
|
48
|
-
year: <current
|
49
|
-
ruby_version: 1.9.
|
50
|
-
rails_version: 3.
|
50
|
+
year: <current year>
|
51
|
+
ruby_version: 1.9.0
|
52
|
+
rails_version: 3.1.0
|
53
|
+
post_install_message: nil
|
51
54
|
|
52
55
|
= Usage
|
53
56
|
|
@@ -74,12 +77,16 @@ available to you via Bundler (i.e. rake -T):
|
|
74
77
|
|
75
78
|
= Best Practices
|
76
79
|
|
77
|
-
1. Ensure
|
80
|
+
1. Ensure the RUBYOPT env variable includes the -w option. {Details}[http://avdi.org/devblog/2011/06/23/how-ruby-helps-you-fix-your-broken-code/].
|
78
81
|
|
79
|
-
=
|
82
|
+
= Company
|
80
83
|
|
81
84
|
{Red Alchemist}[http://www.redalchemist.com]
|
82
85
|
|
86
|
+
= Author
|
87
|
+
|
88
|
+
{Brooke Kuhlmann}[http://www.redalchemist.com]
|
89
|
+
|
83
90
|
= License
|
84
91
|
|
85
92
|
Copyright (c) 2011 {Red Alchemist}[http://www.redalchemist.com].
|
data/bin/gemsmith
CHANGED
data/gemsmith.gemspec
CHANGED
@@ -6,14 +6,16 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "gemsmith"
|
7
7
|
s.version = Gemsmith::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.
|
10
|
-
s.email =
|
9
|
+
s.author = "Brooke Kuhlmann"
|
10
|
+
s.email = "brooke@redalchemist.com"
|
11
11
|
s.homepage = "http://www.redalchemist.com"
|
12
12
|
s.summary = "Ruby gem skeleton generation for the professional gemsmith."
|
13
13
|
s.description = "Ruby gem skeleton generation for the professional gemsmith. Includes custom settings, binary, Ruby on Rails, and RSpec support. "
|
14
14
|
|
15
15
|
s.rdoc_options << "CHANGELOG.rdoc"
|
16
|
+
s.required_ruby_version = "~> 1.9.0"
|
16
17
|
s.add_dependency "thor", "~> 0.14.0"
|
18
|
+
s.add_dependency "thor_plus", ">= 0.1.0"
|
17
19
|
s.add_development_dependency "rspec"
|
18
20
|
s.add_development_dependency "aruba"
|
19
21
|
s.executables << "gemsmith"
|
data/lib/gemsmith.rb
CHANGED
data/lib/gemsmith/cli.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require "yaml"
|
2
2
|
require "thor"
|
3
3
|
require "thor/actions"
|
4
|
+
require "thor_plus/actions"
|
4
5
|
|
5
6
|
module Gemsmith
|
6
7
|
class CLI < Thor
|
7
8
|
include Thor::Actions
|
8
|
-
include
|
9
|
+
include ThorPlus::Actions
|
9
10
|
|
10
11
|
# Overwrites the Thor template source root.
|
11
12
|
def self.source_root
|
@@ -15,40 +16,21 @@ module Gemsmith
|
|
15
16
|
# Initialize.
|
16
17
|
def initialize args = [], options = {}, config = {}
|
17
18
|
super
|
18
|
-
|
19
|
-
load_settings
|
19
|
+
load_settings settings_file
|
20
20
|
end
|
21
21
|
|
22
22
|
desc "-c, [create=GEM_NAME]", "Create new gem."
|
23
23
|
map "-c" => :create
|
24
|
-
method_option :bin, :
|
25
|
-
method_option :rails, :
|
26
|
-
method_option :rspec, :
|
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
|
26
|
+
method_option :rspec, aliases: "-s", desc: "Add RSpec support.", type: :boolean, default: true
|
27
27
|
def create name
|
28
28
|
say
|
29
|
-
|
29
|
+
info "Creating gem..."
|
30
30
|
|
31
31
|
# Initialize options.
|
32
|
-
|
33
|
-
|
34
|
-
author_name = @settings[:author_name] || `git config user.name`.chomp || "TODO: Add your full name here."
|
35
|
-
author_url = @settings[:author_url] || "TODO: Add your home page URL here."
|
36
|
-
template_options = {
|
37
|
-
:gem_name => gem_name,
|
38
|
-
:gem_class => gem_class,
|
39
|
-
:gem_platform => (@settings[:gem_platform] || "Gem::Platform::RUBY"),
|
40
|
-
:author_name => author_name,
|
41
|
-
:author_email => (@settings[:author_email] || `git config user.email`.chomp || "TODO: Add your email address here."),
|
42
|
-
:author_url => author_url,
|
43
|
-
:company_name => (@settings[:company_name] || author_name),
|
44
|
-
:company_url => (@settings[:company_url] || author_url),
|
45
|
-
:year => Time.now.year,
|
46
|
-
:bin => options[:bin],
|
47
|
-
:rails => options[:rails],
|
48
|
-
:rspec => options[:rspec],
|
49
|
-
:ruby_version => (@settings[:ruby_version] || "1.9.2"),
|
50
|
-
:rails_version => (@settings[:rails_version] || "3.0.0")
|
51
|
-
}
|
32
|
+
template_options = build_template_options name, options
|
33
|
+
gem_name = template_options[:gem_name]
|
52
34
|
|
53
35
|
# Configure templates.
|
54
36
|
target_path = File.join Dir.pwd, gem_name
|
@@ -65,13 +47,13 @@ module Gemsmith
|
|
65
47
|
template File.join("lib", "gem", "version.rb.tmp"), File.join(target_path, "lib", gem_name, "version.rb"), template_options
|
66
48
|
|
67
49
|
# Binary (optional).
|
68
|
-
if
|
50
|
+
if template_options[:bin]
|
69
51
|
template File.join("bin", "gem.tmp"), File.join(target_path, "bin", gem_name), template_options
|
70
52
|
template File.join("lib", "gem", "cli.rb.tmp"), File.join(target_path, "lib", gem_name, "cli.rb"), template_options
|
71
53
|
end
|
72
54
|
|
73
55
|
# Ruby on Rails (optional).
|
74
|
-
if
|
56
|
+
if template_options[:rails]
|
75
57
|
# ActionController
|
76
58
|
template File.join("lib", "gem", "action_controller", "class_methods.rb.tmp"), File.join(target_path, "lib", gem_name, "action_controller", "class_methods.rb"), template_options
|
77
59
|
template File.join("lib", "gem", "action_controller", "instance_methods.rb.tmp"), File.join(target_path, "lib", gem_name, "action_controller", "instance_methods.rb"), template_options
|
@@ -89,7 +71,7 @@ module Gemsmith
|
|
89
71
|
end
|
90
72
|
|
91
73
|
# RSpec (optional).
|
92
|
-
if
|
74
|
+
if template_options[:rspec]
|
93
75
|
template "rspec.tmp", File.join(target_path, ".rspec"), template_options
|
94
76
|
template File.join("spec", "spec_helper.rb.tmp"), File.join(target_path, "spec", "spec_helper.rb"), template_options
|
95
77
|
template File.join("spec", "gem_spec.rb.tmp"), File.join(target_path, "spec", "#{gem_name}_spec.rb"), template_options
|
@@ -102,14 +84,14 @@ module Gemsmith
|
|
102
84
|
`git commit -a -n -m "Gemsmith skeleton created."`
|
103
85
|
end
|
104
86
|
|
105
|
-
|
87
|
+
info "Gem created."
|
106
88
|
say
|
107
89
|
end
|
108
90
|
|
109
91
|
desc "-e, [edit]", "Edit gem settings in default editor (assumes $EDITOR environment variable)."
|
110
92
|
map "-e" => :edit
|
111
93
|
def edit
|
112
|
-
`$EDITOR #{
|
94
|
+
`$EDITOR #{settings_file}`
|
113
95
|
end
|
114
96
|
|
115
97
|
desc "-v, [version]", "Show version."
|
@@ -125,16 +107,59 @@ module Gemsmith
|
|
125
107
|
|
126
108
|
private
|
127
109
|
|
110
|
+
# Answers the default settings file path.
|
111
|
+
def settings_file
|
112
|
+
@settings_file ||= File.join ENV["HOME"], ".gemsmith", "settings.yml"
|
113
|
+
end
|
114
|
+
|
128
115
|
# Load settings.
|
129
|
-
|
130
|
-
|
116
|
+
# ==== Parameters
|
117
|
+
# * +file+ - Required. The path to the settings (YAML) file.
|
118
|
+
def load_settings file
|
119
|
+
if file && File.exists?(file)
|
131
120
|
begin
|
132
|
-
settings = YAML::load_file
|
121
|
+
settings = YAML::load_file file
|
133
122
|
@settings = settings.reject {|key, value| value.nil?}
|
134
123
|
rescue
|
135
|
-
|
124
|
+
error "Invalid settings: #{file}."
|
136
125
|
end
|
137
126
|
end
|
138
127
|
end
|
128
|
+
|
129
|
+
# Answers current settings.
|
130
|
+
def settings
|
131
|
+
@settings ||= {}
|
132
|
+
end
|
133
|
+
|
134
|
+
# Builds template options with default and/or custom settings (where the custom
|
135
|
+
# settings trump default settings).
|
136
|
+
# ==== Parameters
|
137
|
+
# * +name+ - Required. The gem name.
|
138
|
+
# * +options+ - Optional. Additional command line options. Default: {}
|
139
|
+
def build_template_options name, options = {}
|
140
|
+
gem_name = Thor::Util.snake_case name
|
141
|
+
gem_class = Thor::Util.camel_case name
|
142
|
+
author_name = settings[:author_name] || `git config user.name`.chomp || "TODO: Add full name here."
|
143
|
+
author_email = settings[:author_email] || `git config user.email`.chomp || "TODO: Add email address here."
|
144
|
+
author_url = settings[:author_url] || "https://www.unknown.com"
|
145
|
+
{
|
146
|
+
gem_name: gem_name,
|
147
|
+
gem_class: gem_class,
|
148
|
+
gem_platform: (settings[:gem_platform] || "Gem::Platform::RUBY"),
|
149
|
+
author_name: author_name,
|
150
|
+
author_email: author_email,
|
151
|
+
author_url: (author_url || "http://www.unknown.com"),
|
152
|
+
gem_url: (settings[:gem_url] || author_url),
|
153
|
+
company_name: (settings[:company_name] || author_name),
|
154
|
+
company_url: (settings[:company_url] || author_url),
|
155
|
+
year: (settings[:year] || Time.now.year),
|
156
|
+
ruby_version: (settings[:ruby_version] || "1.9.0"),
|
157
|
+
rails_version: (settings[:rails_version] || "3.1.0"),
|
158
|
+
post_install_message: settings[:post_install_message],
|
159
|
+
bin: (options[:bin] || false),
|
160
|
+
rails: (options[:rails] || false),
|
161
|
+
rspec: (options[:rspec].nil? ? true : options[:rspec]),
|
162
|
+
}
|
163
|
+
end
|
139
164
|
end
|
140
165
|
end
|
@@ -22,10 +22,14 @@ Add the following to your Gemfile:
|
|
22
22
|
|
23
23
|
= Usage
|
24
24
|
|
25
|
-
=
|
25
|
+
= Company
|
26
26
|
|
27
27
|
{<%= config[:company_name] %>}[<%= config[:company_url] %>]
|
28
28
|
|
29
|
+
= Author
|
30
|
+
|
31
|
+
{<%= config[:author_name] %>}[<%= config[:author_url] %>]
|
32
|
+
|
29
33
|
= License
|
30
34
|
|
31
35
|
Copyright (c) <%= config[:year] %> {<%= config[:company_name] %>}[<%= config[:company_url] %>].
|
@@ -3,19 +3,24 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
require "<%=config[:gem_name]%>/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name
|
7
|
-
s.version
|
8
|
-
s.platform
|
9
|
-
s.
|
10
|
-
s.email
|
11
|
-
s.homepage
|
12
|
-
s.summary
|
13
|
-
s.description
|
6
|
+
s.name = "<%= config[:gem_name] %>"
|
7
|
+
s.version = <%= config[:gem_class] %>::VERSION
|
8
|
+
s.platform = <%= config[:gem_platform] %>
|
9
|
+
s.author = "<%= config[:author_name] %>"
|
10
|
+
s.email = "<%= config[:author_email] %>"
|
11
|
+
s.homepage = "<%= config[:gem_url] %>"
|
12
|
+
s.summary = "TODO: Add gem summary here."
|
13
|
+
s.description = "TODO: Add gem description here."
|
14
|
+
s.license = "MIT"
|
15
|
+
<%- if config[:post_install_message] -%>
|
16
|
+
s.post_install_message = "<%= config[:post_install_message] %>"
|
17
|
+
<%- end -%>
|
14
18
|
|
15
19
|
s.rdoc_options << "CHANGELOG.rdoc"
|
16
20
|
s.required_ruby_version = "~> <%= config[:ruby_version] %>"
|
17
21
|
<%- if config[:bin] -%>
|
18
22
|
s.add_dependency "thor"
|
23
|
+
s.add_dependency "thor_plus"
|
19
24
|
<%- end -%>
|
20
25
|
<%- if config[:rails] -%>
|
21
26
|
s.add_dependency "rails", "~> <%= config[:rails_version] %>"
|
@@ -5,8 +5,7 @@ module <%= config[:gem_class] %>
|
|
5
5
|
end
|
6
6
|
|
7
7
|
module ClassMethods
|
8
|
-
|
9
|
-
def is_<%= config[:gem_name] %>_enhanced options = {}
|
8
|
+
def acts_as_<%= config[:gem_name] %> options = {}
|
10
9
|
self.send :include, InstanceMethods
|
11
10
|
|
12
11
|
# Default Options
|
@@ -5,8 +5,7 @@ module <%= config[:gem_class] %>
|
|
5
5
|
end
|
6
6
|
|
7
7
|
module ClassMethods
|
8
|
-
|
9
|
-
def is_<%= config[:gem_name] %>_enhanced options = {}
|
8
|
+
def acts_as_<%= config[:gem_name] %> options = {}
|
10
9
|
self.send :include, InstanceMethods
|
11
10
|
|
12
11
|
# Default Options
|
@@ -1,9 +1,12 @@
|
|
1
|
+
require "yaml"
|
1
2
|
require "thor"
|
2
3
|
require "thor/actions"
|
4
|
+
require "thor_plus/actions"
|
3
5
|
|
4
6
|
module <%= config[:gem_class] %>
|
5
7
|
class CLI < Thor
|
6
8
|
include Thor::Actions
|
9
|
+
include ThorPlus::Actions
|
7
10
|
|
8
11
|
# Initialize.
|
9
12
|
def initialize args = [], options = {}, config = {}
|
data/lib/gemsmith/version.rb
CHANGED
@@ -0,0 +1,71 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Settings" do
|
4
|
+
before :each do
|
5
|
+
# Default settings.
|
6
|
+
class Gemsmith::CLI
|
7
|
+
private
|
8
|
+
def settings_file
|
9
|
+
nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
@cli_default = Gemsmith::CLI.new
|
13
|
+
|
14
|
+
# Custom settings.
|
15
|
+
class Gemsmith::CLI
|
16
|
+
private
|
17
|
+
def settings_file
|
18
|
+
File.join File.dirname(__FILE__), "support", "settings.yml"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
@cli_custom = Gemsmith::CLI.new
|
22
|
+
end
|
23
|
+
|
24
|
+
context "Load" do
|
25
|
+
it "should be empty" do
|
26
|
+
@cli_default.send(:settings).should be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should build defaults" do
|
30
|
+
author_name = `git config user.name`.chomp || "TODO: Add full name here."
|
31
|
+
author_url = "https://www.unknown.com"
|
32
|
+
options = @cli_default.send :build_template_options, "test"
|
33
|
+
options[:gem_name].should be == "test"
|
34
|
+
options[:gem_class].should be == "Test"
|
35
|
+
options[:gem_platform].should be == "Gem::Platform::RUBY"
|
36
|
+
options[:author_name].should be == author_name
|
37
|
+
options[:author_email].should be == (`git config user.email`.chomp || "TODO: Add email address here.")
|
38
|
+
options[:author_url].should be == author_url
|
39
|
+
options[:gem_url].should be == "https://www.unknown.com"
|
40
|
+
options[:company_name].should be == author_name
|
41
|
+
options[:company_url].should be == author_url
|
42
|
+
options[:year].should be == Time.now.year
|
43
|
+
options[:ruby_version].should be == "1.9.0"
|
44
|
+
options[:rails_version].should be == "3.1.0"
|
45
|
+
options[:post_install_message].should be == nil
|
46
|
+
options[:bin].should be_false
|
47
|
+
options[:rails].should be_false
|
48
|
+
options[:rspec].should be_true
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should be custom" do
|
52
|
+
options = @cli_custom.send :build_template_options, "test"
|
53
|
+
options[:gem_name].should be == "test"
|
54
|
+
options[:gem_class].should be == "Test"
|
55
|
+
options[:gem_platform].should be == "Gem::Platform::CURRENT"
|
56
|
+
options[:author_name].should be == "Testy Tester"
|
57
|
+
options[:author_email].should be == "test@test.com"
|
58
|
+
options[:author_url].should be == "https://www.test.com"
|
59
|
+
options[:gem_url].should be == "https://www.gem.com"
|
60
|
+
options[:company_name].should be == "ACME"
|
61
|
+
options[:company_url].should be == "https://www.acme.com"
|
62
|
+
options[:year].should be == 1920
|
63
|
+
options[:ruby_version].should be == "1.8.0"
|
64
|
+
options[:rails_version].should be == "2.3.0"
|
65
|
+
options[:post_install_message].should be == "Follow @tester on Twitter for more info."
|
66
|
+
options[:bin].should be_false
|
67
|
+
options[:rails].should be_false
|
68
|
+
options[:rspec].should be_true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
:gem_platform: Gem::Platform::CURRENT
|
3
|
+
:author_name: "Testy Tester"
|
4
|
+
:author_email: "test@test.com"
|
5
|
+
:author_url: "https://www.test.com"
|
6
|
+
:gem_url: "https://www.gem.com"
|
7
|
+
:company_name: "ACME"
|
8
|
+
:company_url: "https://www.acme.com"
|
9
|
+
:year: 1920
|
10
|
+
:ruby_version: 1.8.0
|
11
|
+
:rails_version: 2.3.0
|
12
|
+
:post_install_message: "Follow @tester on Twitter for more info."
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemsmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 11
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
version: 0.5.0
|
5
|
+
version: 1.0.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Brooke Kuhlmann
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-10-29 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: thor
|
@@ -25,45 +20,44 @@ dependencies:
|
|
25
20
|
requirements:
|
26
21
|
- - ~>
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 39
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 14
|
32
|
-
- 0
|
33
23
|
version: 0.14.0
|
34
24
|
type: :runtime
|
35
25
|
version_requirements: *id001
|
36
26
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
27
|
+
name: thor_plus
|
38
28
|
prerelease: false
|
39
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
30
|
none: false
|
41
31
|
requirements:
|
42
32
|
- - ">="
|
43
33
|
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
- 0
|
47
|
-
version: "0"
|
48
|
-
type: :development
|
34
|
+
version: 0.1.0
|
35
|
+
type: :runtime
|
49
36
|
version_requirements: *id002
|
50
37
|
- !ruby/object:Gem::Dependency
|
51
|
-
name:
|
38
|
+
name: rspec
|
52
39
|
prerelease: false
|
53
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
42
|
requirements:
|
56
43
|
- - ">="
|
57
44
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
|
-
segments:
|
60
|
-
- 0
|
61
45
|
version: "0"
|
62
46
|
type: :development
|
63
47
|
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: aruba
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id004
|
64
59
|
description: "Ruby gem skeleton generation for the professional gemsmith. Includes custom settings, binary, Ruby on Rails, and RSpec support. "
|
65
|
-
email:
|
66
|
-
- brooke@redalchemist.com
|
60
|
+
email: brooke@redalchemist.com
|
67
61
|
executables:
|
68
62
|
- gemsmith
|
69
63
|
extensions: []
|
@@ -104,8 +98,10 @@ files:
|
|
104
98
|
- lib/gemsmith/templates/rspec.tmp
|
105
99
|
- lib/gemsmith/templates/spec/gem_spec.rb.tmp
|
106
100
|
- lib/gemsmith/templates/spec/spec_helper.rb.tmp
|
107
|
-
- lib/gemsmith/utilities.rb
|
108
101
|
- lib/gemsmith/version.rb
|
102
|
+
- spec/settings_spec.rb
|
103
|
+
- spec/spec_helper.rb
|
104
|
+
- spec/support/settings.yml
|
109
105
|
homepage: http://www.redalchemist.com
|
110
106
|
licenses: []
|
111
107
|
|
@@ -117,27 +113,23 @@ require_paths:
|
|
117
113
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
114
|
none: false
|
119
115
|
requirements:
|
120
|
-
- -
|
116
|
+
- - ~>
|
121
117
|
- !ruby/object:Gem::Version
|
122
|
-
|
123
|
-
segments:
|
124
|
-
- 0
|
125
|
-
version: "0"
|
118
|
+
version: 1.9.0
|
126
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
120
|
none: false
|
128
121
|
requirements:
|
129
122
|
- - ">="
|
130
123
|
- !ruby/object:Gem::Version
|
131
|
-
hash: 3
|
132
|
-
segments:
|
133
|
-
- 0
|
134
124
|
version: "0"
|
135
125
|
requirements: []
|
136
126
|
|
137
127
|
rubyforge_project:
|
138
|
-
rubygems_version: 1.8.
|
128
|
+
rubygems_version: 1.8.11
|
139
129
|
signing_key:
|
140
130
|
specification_version: 3
|
141
131
|
summary: Ruby gem skeleton generation for the professional gemsmith.
|
142
|
-
test_files:
|
143
|
-
|
132
|
+
test_files:
|
133
|
+
- spec/settings_spec.rb
|
134
|
+
- spec/spec_helper.rb
|
135
|
+
- spec/support/settings.yml
|
data/lib/gemsmith/utilities.rb
DELETED
@@ -1,14 +0,0 @@
|
|
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
|