newgem 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +8 -0
- data/Manifest.txt +7 -2
- data/README.rdoc +8 -0
- data/Rakefile +4 -1
- data/TODO.markdown +5 -0
- data/app_generators/newgem/newgem_generator.rb +1 -1
- data/app_generators/newgem/templates/Rakefile +3 -0
- data/features/development.feature +2 -11
- data/features/executable_generator.feature +16 -3
- data/features/install_cucumber.feature +13 -1
- data/features/steps/cli.rb +12 -142
- data/features/steps/common.rb +154 -0
- data/lib/newgem.rb +1 -1
- data/newgem_generators/install_website/install_website_generator.rb +1 -1
- data/newgem_generators/install_website/templates/features/website.feature +14 -0
- data/rubygems_generators/executable/executable_generator.rb +9 -1
- data/rubygems_generators/executable/templates/bin/app.rb.erb +1 -1
- data/rubygems_generators/executable/templates/lib/app/cli.rb.erb +2 -2
- data/rubygems_generators/executable/templates/spec/cli_spec.rb.erb +8 -0
- data/rubygems_generators/install_cucumber/install_cucumber_generator.rb +3 -4
- data/rubygems_generators/install_cucumber/templates/features/development.feature +13 -0
- data/rubygems_generators/install_cucumber/templates/features/steps/common.rb +154 -0
- data/rubygems_generators/install_cucumber/templates/{env.rb → features/steps/env.rb.erb} +0 -0
- data/tasks/deployment.rake +1 -1
- data/test/test_install_cucumber_generator.rb +0 -2
- data/test/test_install_website_generator.rb +0 -1
- data/test/test_newgem_generator.rb +3 -3
- data/website/index.html +3 -3
- data/website/index.txt +1 -1
- data/website/rubyforge.html +1 -1
- metadata +10 -5
- data/rubygems_generators/install_cucumber/templates/cucumber.rake +0 -6
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 1.0.4 2008-11-01
|
2
|
+
|
3
|
+
* Hard-coded cucumber >= 0.1.8 dependency to avoid accidently requiring unreleased versions that are only in development
|
4
|
+
* local tasks/*.rake are loaded in generated gems
|
5
|
+
* install_cucumber: adds a development.feature to check that gem building can succeed
|
6
|
+
* cleaned up some require statements to explicitly load code from local src not an installed gem
|
7
|
+
* rake default => [:test, :features] - for continuous integration via runcoderun.com
|
8
|
+
|
1
9
|
== 1.0.3 2008-10-31
|
2
10
|
|
3
11
|
* GitHub RubyGem support. `rake gemspec` generates a clean `my_project.gemspec` file that will work with GitHub
|
data/Manifest.txt
CHANGED
@@ -3,6 +3,7 @@ Manifest.txt
|
|
3
3
|
PostInstall.txt
|
4
4
|
README.rdoc
|
5
5
|
Rakefile
|
6
|
+
TODO.markdown
|
6
7
|
app_generators/newgem/newgem_generator.rb
|
7
8
|
app_generators/newgem/templates/History.txt
|
8
9
|
app_generators/newgem/templates/PostInstall.txt
|
@@ -39,6 +40,7 @@ features/install_website.feature
|
|
39
40
|
features/newgem_cli.feature
|
40
41
|
features/rubygem_tasks.feature
|
41
42
|
features/steps/cli.rb
|
43
|
+
features/steps/common.rb
|
42
44
|
features/steps/env.rb
|
43
45
|
features/steps/rubygems.rb
|
44
46
|
lib/hoe-patched.rb
|
@@ -50,6 +52,7 @@ lib/newgem/tasks.rb
|
|
50
52
|
newgem_generators/install_website/USAGE
|
51
53
|
newgem_generators/install_website/install_website_generator.rb
|
52
54
|
newgem_generators/install_website/templates/config/website.yml.sample.erb
|
55
|
+
newgem_generators/install_website/templates/features/website.feature
|
53
56
|
newgem_generators/install_website/templates/script/txt2html
|
54
57
|
newgem_generators/install_website/templates/script/win_script.cmd
|
55
58
|
newgem_generators/install_website/templates/tasks/website.rake
|
@@ -71,6 +74,7 @@ rubygems_generators/executable/USAGE
|
|
71
74
|
rubygems_generators/executable/executable_generator.rb
|
72
75
|
rubygems_generators/executable/templates/bin/app.rb.erb
|
73
76
|
rubygems_generators/executable/templates/lib/app/cli.rb.erb
|
77
|
+
rubygems_generators/executable/templates/spec/cli_spec.rb.erb
|
74
78
|
rubygems_generators/executable/templates/test/test_cli.rb.erb
|
75
79
|
rubygems_generators/extconf/USAGE
|
76
80
|
rubygems_generators/extconf/extconf_generator.rb
|
@@ -82,8 +86,9 @@ rubygems_generators/extconf/templates/tasks/extconf.rake
|
|
82
86
|
rubygems_generators/extconf/templates/tasks/extconf_name.rake
|
83
87
|
rubygems_generators/extconf/templates/test/test.rb.erb
|
84
88
|
rubygems_generators/install_cucumber/install_cucumber_generator.rb
|
85
|
-
rubygems_generators/install_cucumber/templates/
|
86
|
-
rubygems_generators/install_cucumber/templates/
|
89
|
+
rubygems_generators/install_cucumber/templates/features/development.feature
|
90
|
+
rubygems_generators/install_cucumber/templates/features/steps/common.rb
|
91
|
+
rubygems_generators/install_cucumber/templates/features/steps/env.rb.erb
|
87
92
|
rubygems_generators/install_jruby/USAGE
|
88
93
|
rubygems_generators/install_jruby/install_jruby_generator.rb
|
89
94
|
rubygems_generators/install_jruby/templates/tasks/jruby.rake
|
data/README.rdoc
CHANGED
@@ -83,6 +83,14 @@ Alternately, download the gem and install manually.
|
|
83
83
|
|
84
84
|
Tickets or suggestions can be raised at http://drnic.lighthouseapp.com/projects/18881-newgem/overview
|
85
85
|
|
86
|
+
== DOES IT WORK?
|
87
|
+
|
88
|
+
Much of newgem's behaviour is covered by functional tests (see features at http://github.com/drnic/newgem/tree/master/features).
|
89
|
+
|
90
|
+
With each commit to the master branch of the git repository, these functional tests and the unit tests are run via a continuous integration server.
|
91
|
+
|
92
|
+
Current build status: http://runcoderun.com/drnic/newgem
|
93
|
+
|
86
94
|
== TUTORIALS:
|
87
95
|
|
88
96
|
* Home page is a full tutorial - http://newgem.rubyforge.org
|
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ $hoe = Hoe.new('newgem', Newgem::VERSION) do |p|
|
|
15
15
|
['syntax','>= 1.0.0']
|
16
16
|
]
|
17
17
|
p.extra_dev_deps = [
|
18
|
-
['cucumber', ">=
|
18
|
+
['cucumber', ">= 1.1.8"]
|
19
19
|
]
|
20
20
|
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
21
21
|
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
@@ -54,3 +54,6 @@ namespace :hoe do
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
57
|
+
|
58
|
+
remove_task :default
|
59
|
+
task :default => :features
|
data/TODO.markdown
ADDED
@@ -151,7 +151,7 @@ EOS
|
|
151
151
|
@author = options[:author]
|
152
152
|
@email = options[:email]
|
153
153
|
unless @author && @email
|
154
|
-
require 'newgem/rubyforge'
|
154
|
+
require File.dirname(__FILE__) + '/../../lib/newgem/rubyforge'
|
155
155
|
rubyforge_config = Newgem::Rubyforge.new
|
156
156
|
@author ||= rubyforge_config.full_name
|
157
157
|
@email ||= rubyforge_config.email
|
@@ -24,4 +24,7 @@ $hoe = Hoe.new('<%= gem_name %>', <%= module_name %>::VERSION) do |p|
|
|
24
24
|
end
|
25
25
|
|
26
26
|
require 'newgem/tasks' # load /tasks/*.rake
|
27
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
27
28
|
|
29
|
+
# TODO - want other tests/tasks run by default? Add them to the list
|
30
|
+
# task :default => [:spec, :features]
|
@@ -3,20 +3,11 @@ Feature: Development processes of newgem itself (rake tasks)
|
|
3
3
|
As a Newgem maintainer or contributor
|
4
4
|
I want rake tasks to maintain and release the gem
|
5
5
|
So that I can spend time on the tests and code, and not excessive time on maintenance processes
|
6
|
-
|
7
|
-
# Scenario: Deploy project website via local rsync
|
8
|
-
# Given copy this project for test
|
9
|
-
# Given a safe folder for dummy deployment
|
10
|
-
# Given project website configuration for safe folder on local machine
|
11
|
-
# When task 'rake website' is invoked
|
12
|
-
# Then file 'website/index.html' is created
|
13
|
-
# Then remote file 'index.html' is created after local rsync
|
14
|
-
# Then remote folder 'rdoc' is created after local rsync
|
15
|
-
#
|
6
|
+
|
16
7
|
Scenario: Generate RubyGem
|
17
8
|
Given this project is active project folder
|
18
9
|
And 'pkg' folder is deleted
|
19
10
|
When task 'rake gem' is invoked
|
20
11
|
Then folder 'pkg' is created
|
21
|
-
And file matching 'pkg
|
12
|
+
And file matching 'pkg/*.gem' is created else you should run "rake manifest:refresh" to fix this
|
22
13
|
And gem spec key 'rdoc_options' contains /--mainREADME.rdoc/
|
@@ -11,6 +11,14 @@ Feature: Generate an executable/CLI scaffold
|
|
11
11
|
And file 'bin/my_app' is created
|
12
12
|
And file 'lib/my_app/cli.rb' is created
|
13
13
|
And file 'test/test_my_app_cli.rb' is created
|
14
|
+
|
15
|
+
Scenario: Run executable generator with name of executable on rspec project
|
16
|
+
Given an existing newgem scaffold using options '-T rspec' [called 'my_project']
|
17
|
+
When 'executable' generator is invoked with arguments 'my_app'
|
18
|
+
Then folder 'bin/my_app' is created
|
19
|
+
And file 'bin/my_app' is created
|
20
|
+
And file 'lib/my_app/cli.rb' is created
|
21
|
+
And file 'spec/my_app_cli_spec.rb' is created
|
14
22
|
|
15
23
|
Scenario: Run CLI app from executable generator to show help
|
16
24
|
Given an existing newgem scaffold [called 'my_project']
|
@@ -25,9 +33,14 @@ Feature: Generate an executable/CLI scaffold
|
|
25
33
|
When run executable 'bin/my_app' with arguments ''
|
26
34
|
Then output does match /lib\/my_app\/cli.rb/
|
27
35
|
|
28
|
-
Scenario: Run unit tests after executable generator should all pass
|
36
|
+
Scenario: Run unit tests after executable generator should all pass for test/unit
|
29
37
|
Given an existing newgem scaffold [called 'my_project']
|
30
|
-
|
38
|
+
And 'executable' generator is invoked with arguments 'my_app'
|
31
39
|
When run unit tests for test file 'test/test_my_app_cli.rb'
|
32
40
|
Then all 1 tests pass
|
33
|
-
|
41
|
+
|
42
|
+
Scenario: Run unit tests after executable generator should all pass for rspec
|
43
|
+
Given an existing newgem scaffold using options '-T rspec' [called 'my_project']
|
44
|
+
And 'executable' generator is invoked with arguments 'my_app'
|
45
|
+
When run unit tests for test file 'spec/my_app_cli_spec.rb'
|
46
|
+
Then all 1 examples pass
|
@@ -8,10 +8,22 @@ Feature: RubyGems have features to be described and tested
|
|
8
8
|
Given an existing newgem scaffold [called 'my_project']
|
9
9
|
When 'install_cucumber' generator is invoked with arguments ''
|
10
10
|
Then folder 'features/steps' is created
|
11
|
-
And file '
|
11
|
+
And file 'features/development.feature' is created
|
12
|
+
And file 'features/steps/common.rb' is created
|
13
|
+
And file 'tasks/cucumber.rake' is not created as it is loaded via newgem itself
|
14
|
+
|
15
|
+
Scenario: NewGem and generated gems should share some common files
|
16
|
+
Given an existing newgem scaffold [called 'my_project']
|
17
|
+
When 'install_cucumber' generator is invoked with arguments ''
|
18
|
+
Then gem file 'features/steps/common.rb' and generated file 'features/steps/common.rb' should be the same
|
19
|
+
Then gem file 'features/development.feature' and generated file 'features/development.feature' should be the same
|
12
20
|
|
13
21
|
Scenario: Installed Cucumber includes a 'rake features' task
|
14
22
|
Given an existing newgem scaffold [called 'my_project']
|
15
23
|
And 'install_cucumber' generator is invoked with arguments ''
|
16
24
|
When task 'rake features' is invoked
|
17
25
|
Then task 'rake features' is executed successfully
|
26
|
+
And output does match /Feature: Development processes of newgem itself \(rake tasks\)/
|
27
|
+
And output does match /And file matching 'pkg/\*\.gem' is created/
|
28
|
+
And output does not match /You can use these snippets to implement pending steps/
|
29
|
+
|
data/features/steps/cli.rb
CHANGED
@@ -1,39 +1,22 @@
|
|
1
|
-
Given %r{^
|
2
|
-
FileUtils.rm_rf @tmp_root = File.dirname(__FILE__) + "/../../tmp"
|
3
|
-
FileUtils.mkdir_p @tmp_root
|
4
|
-
@newgem_lib_path = File.expand_path(File.dirname(__FILE__) + '/../../lib')
|
5
|
-
end
|
6
|
-
|
7
|
-
Given /^this project is active project folder/ do
|
1
|
+
Given %r{^an existing newgem scaffold \[called '(.*)'\]} do |project_name|
|
8
2
|
Given "a safe folder"
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def force_local_newgem_priority(project_name = @project_name)
|
17
|
-
rakefile = File.read(File.join(project_name, 'Rakefile'))
|
18
|
-
File.open(File.join(project_name, 'Rakefile'), "w+") do |f|
|
19
|
-
f << "$:.unshift('#{@newgem_lib_path}')\n"
|
20
|
-
f << rakefile
|
3
|
+
newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem")
|
4
|
+
setup_active_project_folder project_name
|
5
|
+
FileUtils.chdir @tmp_root do
|
6
|
+
@stdout = "newgem.out"
|
7
|
+
system "ruby #{newgem} #{project_name} > #{@stdout}"
|
8
|
+
force_local_lib_override
|
21
9
|
end
|
22
10
|
end
|
23
11
|
|
24
|
-
|
25
|
-
@active_project_folder = File.join(@tmp_root, project_name)
|
26
|
-
@project_name = project_name
|
27
|
-
end
|
28
|
-
|
29
|
-
Given %r{^an existing newgem scaffold \[called '(.*)'\]} do |project_name|
|
12
|
+
Given %r{^an existing newgem scaffold using options '(.*)' \[called '(.*)'\]} do |arguments, project_name|
|
30
13
|
Given "a safe folder"
|
31
14
|
newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem")
|
32
15
|
setup_active_project_folder project_name
|
33
16
|
FileUtils.chdir @tmp_root do
|
34
17
|
@stdout = "newgem.out"
|
35
|
-
system "ruby #{newgem} #{project_name} > #{@stdout}"
|
36
|
-
|
18
|
+
system "ruby #{newgem} #{arguments} #{project_name} > #{@stdout}"
|
19
|
+
force_local_lib_override
|
37
20
|
end
|
38
21
|
end
|
39
22
|
|
@@ -49,19 +32,13 @@ Given /^project website configuration for safe folder on local machine$/ do
|
|
49
32
|
end
|
50
33
|
end
|
51
34
|
|
52
|
-
Given /^'(.*)' folder is deleted/ do |folder|
|
53
|
-
FileUtils.chdir @active_project_folder do
|
54
|
-
FileUtils.rm_rf folder
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
35
|
When %r{^newgem is executed for project '(.*)' with no options$} do |project_name|
|
59
36
|
newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem")
|
60
37
|
setup_active_project_folder project_name
|
61
38
|
FileUtils.chdir @tmp_root do
|
62
39
|
@stdout = "newgem.out"
|
63
40
|
system "ruby #{newgem} #{project_name} > #{@stdout}"
|
64
|
-
|
41
|
+
force_local_lib_override
|
65
42
|
end
|
66
43
|
end
|
67
44
|
|
@@ -71,25 +48,7 @@ When %r{^newgem is executed for project '(.*)' with options '(.*)'$} do |project
|
|
71
48
|
FileUtils.chdir @tmp_root do
|
72
49
|
@stdout = "newgem.out"
|
73
50
|
system "ruby #{newgem} #{arguments} #{project_name} > #{@stdout}"
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
When %r{^'(.*)' generator is invoked with arguments '(.*)'$} do |generator, arguments|
|
79
|
-
FileUtils.chdir(@active_project_folder) do
|
80
|
-
if Object.const_defined?("APP_ROOT")
|
81
|
-
APP_ROOT.replace(FileUtils.pwd)
|
82
|
-
else
|
83
|
-
APP_ROOT = FileUtils.pwd
|
84
|
-
end
|
85
|
-
run_generator(generator, arguments.split(' '), SOURCES)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
When /^run executable '(.*)' with arguments '(.*)'$/ do |executable, arguments|
|
90
|
-
@stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
|
91
|
-
FileUtils.chdir(@active_project_folder) do
|
92
|
-
system "ruby #{executable} #{arguments} > #{@stdout}"
|
51
|
+
force_local_lib_override
|
93
52
|
end
|
94
53
|
end
|
95
54
|
|
@@ -100,103 +59,14 @@ When /^run unit tests for test file '(.*)'$/ do |test_file|
|
|
100
59
|
end
|
101
60
|
end
|
102
61
|
|
103
|
-
When /^task 'rake (.*)' is invoked$/ do |task|
|
104
|
-
@stdout = File.expand_path(File.join(@tmp_root, "tests.out"))
|
105
|
-
FileUtils.chdir(@active_project_folder) do
|
106
|
-
system "rake #{task} --trace > #{@stdout} 2> #{@stdout}"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
Then %r{^folder '(.*)' is created} do |folder|
|
111
|
-
FileUtils.chdir @active_project_folder do
|
112
|
-
File.exists?(folder).should be_true
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
62
|
Then %r{^remote folder '(.*)' is created} do |folder|
|
117
63
|
FileUtils.chdir @remote_folder do
|
118
64
|
File.exists?(folder).should be_true
|
119
65
|
end
|
120
66
|
end
|
121
67
|
|
122
|
-
Then %r{^file '(.*)' (is|is not) created} do |file, is|
|
123
|
-
FileUtils.chdir @active_project_folder do
|
124
|
-
File.exists?(file).should(is == 'is' ? be_true : be_false)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
68
|
Then %r{^remote file '(.*)' (is|is not) created} do |file, is|
|
129
69
|
FileUtils.chdir @remote_folder do
|
130
70
|
File.exists?(file).should(is == 'is' ? be_true : be_false)
|
131
71
|
end
|
132
72
|
end
|
133
|
-
|
134
|
-
Then /^file matching '(.*)' is created$/ do |pattern|
|
135
|
-
FileUtils.chdir @active_project_folder do
|
136
|
-
Dir[pattern].should_not be_empty
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
Then %r{^output same as contents of '(.*)'$} do |file|
|
141
|
-
expected_output = File.read(File.join(File.dirname(__FILE__) + "/../expected_outputs", file))
|
142
|
-
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
143
|
-
actual_output.should == expected_output
|
144
|
-
end
|
145
|
-
|
146
|
-
Then %r{^(does|does not) invoke generator '(.*)'$} do |does_invoke, generator|
|
147
|
-
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
148
|
-
does_invoke == "does" ?
|
149
|
-
actual_output.should(match(/dependency\s+#{generator}/)) :
|
150
|
-
actual_output.should_not(match(/dependency\s+#{generator}/))
|
151
|
-
end
|
152
|
-
|
153
|
-
Then /^help options '(.*)' and '(.*)' are displayed$/ do |opt1, opt2|
|
154
|
-
actual_output = File.read(@stdout)
|
155
|
-
actual_output.should match(/#{opt1}/)
|
156
|
-
actual_output.should match(/#{opt2}/)
|
157
|
-
end
|
158
|
-
|
159
|
-
Then /^output (does|does not) match \/(.*)\/$/ do |does, regex|
|
160
|
-
actual_output = File.read(@stdout)
|
161
|
-
(does == 'does') ?
|
162
|
-
actual_output.should(match(/#{regex}/)) :
|
163
|
-
actual_output.should_not(match(/#{regex}/))
|
164
|
-
end
|
165
|
-
|
166
|
-
Then /^all (\d+) tests pass$/ do |expected_test_count|
|
167
|
-
expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors}
|
168
|
-
actual_output = File.read(@stdout)
|
169
|
-
actual_output.should match(expected)
|
170
|
-
end
|
171
|
-
|
172
|
-
Then /^yaml file '(.*)' contains (\{.*\})/ do |file, yaml|
|
173
|
-
FileUtils.chdir @active_project_folder do
|
174
|
-
yaml = eval yaml
|
175
|
-
YAML.load(File.read(file)).should == yaml
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
Then /^gem spec key '(.*)' contains \/(.*)\/$/ do |key, regex|
|
180
|
-
FileUtils.chdir @active_project_folder do
|
181
|
-
gem_file = Dir["pkg/*.gem"].first
|
182
|
-
gem_spec = Gem::Specification.from_yaml(`gem spec #{gem_file}`)
|
183
|
-
spec_value = gem_spec.send(key.to_sym)
|
184
|
-
spec_value.to_s.should match(/#{regex}/)
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
Then /^Rakefile can display tasks successfully$/ do
|
189
|
-
@rake_stdout = File.expand_path(File.join(@tmp_root, "rakefile.out"))
|
190
|
-
FileUtils.chdir(@active_project_folder) do
|
191
|
-
system "rake -T > #{@rake_stdout} 2> #{@rake_stdout}"
|
192
|
-
end
|
193
|
-
actual_output = File.read(@rake_stdout)
|
194
|
-
actual_output.should match(/^rake\s+\w+\s+#\s.*/)
|
195
|
-
end
|
196
|
-
|
197
|
-
Then /^task 'rake (.*)' is executed successfully$/ do |task|
|
198
|
-
@stdout.should_not be_nil
|
199
|
-
actual_output = File.read(@stdout)
|
200
|
-
actual_output.should_not match(/^Don't know how to build task '#{task}'/)
|
201
|
-
actual_output.should_not match(/Error/i)
|
202
|
-
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
Given %r{^a safe folder} do
|
2
|
+
FileUtils.rm_rf @tmp_root = File.dirname(__FILE__) + "/../../tmp"
|
3
|
+
FileUtils.mkdir_p @tmp_root
|
4
|
+
@lib_path = File.expand_path(File.dirname(__FILE__) + '/../../lib')
|
5
|
+
end
|
6
|
+
|
7
|
+
Given /^this project is active project folder/ do
|
8
|
+
Given "a safe folder"
|
9
|
+
@active_project_folder = File.expand_path(File.dirname(__FILE__) + "/../..")
|
10
|
+
end
|
11
|
+
|
12
|
+
Given /^env variable \$([\w_]+) set to '(.*)'/ do |env_var, value|
|
13
|
+
ENV[env_var] = value
|
14
|
+
end
|
15
|
+
|
16
|
+
def force_local_lib_override(project_name = @project_name)
|
17
|
+
rakefile = File.read(File.join(project_name, 'Rakefile'))
|
18
|
+
File.open(File.join(project_name, 'Rakefile'), "w+") do |f|
|
19
|
+
f << "$:.unshift('#{@lib_path}')\n"
|
20
|
+
f << rakefile
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def setup_active_project_folder project_name
|
25
|
+
@active_project_folder = File.join(@tmp_root, project_name)
|
26
|
+
@project_name = project_name
|
27
|
+
end
|
28
|
+
|
29
|
+
Given /^'(.*)' folder is deleted/ do |folder|
|
30
|
+
FileUtils.chdir @active_project_folder do
|
31
|
+
FileUtils.rm_rf folder
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
When %r{^'(.*)' generator is invoked with arguments '(.*)'$} do |generator, arguments|
|
36
|
+
FileUtils.chdir(@active_project_folder) do
|
37
|
+
if Object.const_defined?("APP_ROOT")
|
38
|
+
APP_ROOT.replace(FileUtils.pwd)
|
39
|
+
else
|
40
|
+
APP_ROOT = FileUtils.pwd
|
41
|
+
end
|
42
|
+
run_generator(generator, arguments.split(' '), SOURCES)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
When /^run executable '(.*)' with arguments '(.*)'$/ do |executable, arguments|
|
47
|
+
@stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
|
48
|
+
FileUtils.chdir(@active_project_folder) do
|
49
|
+
system "ruby #{executable} #{arguments} > #{@stdout}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
When /^task 'rake (.*)' is invoked$/ do |task|
|
54
|
+
@stdout = File.expand_path(File.join(@tmp_root, "tests.out"))
|
55
|
+
FileUtils.chdir(@active_project_folder) do
|
56
|
+
system "rake #{task} --trace > #{@stdout} 2> #{@stdout}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Then %r{^folder '(.*)' is created} do |folder|
|
61
|
+
FileUtils.chdir @active_project_folder do
|
62
|
+
File.exists?(folder).should be_true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
Then %r{^file '(.*)' (is|is not) created} do |file, is|
|
67
|
+
FileUtils.chdir @active_project_folder do
|
68
|
+
File.exists?(file).should(is == 'is' ? be_true : be_false)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
Then /^file matching '(.*)' is created/ do |pattern|
|
73
|
+
FileUtils.chdir @active_project_folder do
|
74
|
+
Dir[pattern].should_not be_empty
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
Then /^gem file '(.*)' and generated file '(.*)' should be the same$/ do |gem_file, project_file|
|
79
|
+
File.exists?(gem_file).should be_true
|
80
|
+
File.exists?(project_file).should be_true
|
81
|
+
gem_file_contents = File.read(File.dirname(__FILE__) + "/../../#{gem_file}")
|
82
|
+
project_file_contents = File.read(File.join(@active_project_folder, project_file))
|
83
|
+
project_file_contents.should == gem_file_contents
|
84
|
+
end
|
85
|
+
|
86
|
+
Then %r{^output same as contents of '(.*)'$} do |file|
|
87
|
+
expected_output = File.read(File.join(File.dirname(__FILE__) + "/../expected_outputs", file))
|
88
|
+
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
89
|
+
actual_output.should == expected_output
|
90
|
+
end
|
91
|
+
|
92
|
+
Then %r{^(does|does not) invoke generator '(.*)'$} do |does_invoke, generator|
|
93
|
+
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
94
|
+
does_invoke == "does" ?
|
95
|
+
actual_output.should(match(/dependency\s+#{generator}/)) :
|
96
|
+
actual_output.should_not(match(/dependency\s+#{generator}/))
|
97
|
+
end
|
98
|
+
|
99
|
+
Then /^help options '(.*)' and '(.*)' are displayed$/ do |opt1, opt2|
|
100
|
+
actual_output = File.read(@stdout)
|
101
|
+
actual_output.should match(/#{opt1}/)
|
102
|
+
actual_output.should match(/#{opt2}/)
|
103
|
+
end
|
104
|
+
|
105
|
+
Then /^output (does|does not) match \/(.*)\/$/ do |does, regex|
|
106
|
+
actual_output = File.read(@stdout)
|
107
|
+
(does == 'does') ?
|
108
|
+
actual_output.should(match(/#{regex}/)) :
|
109
|
+
actual_output.should_not(match(/#{regex}/))
|
110
|
+
end
|
111
|
+
|
112
|
+
Then /^all (\d+) tests pass$/ do |expected_test_count|
|
113
|
+
expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors}
|
114
|
+
actual_output = File.read(@stdout)
|
115
|
+
actual_output.should match(expected)
|
116
|
+
end
|
117
|
+
|
118
|
+
Then /^all (\d+) examples pass$/ do |expected_test_count|
|
119
|
+
expected = %r{^#{expected_test_count} examples?, 0 failures}
|
120
|
+
actual_output = File.read(@stdout)
|
121
|
+
actual_output.should match(expected)
|
122
|
+
end
|
123
|
+
|
124
|
+
Then /^yaml file '(.*)' contains (\{.*\})/ do |file, yaml|
|
125
|
+
FileUtils.chdir @active_project_folder do
|
126
|
+
yaml = eval yaml
|
127
|
+
YAML.load(File.read(file)).should == yaml
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
Then /^Rakefile can display tasks successfully$/ do
|
132
|
+
@stdout = File.expand_path(File.join(@tmp_root, "rakefile.out"))
|
133
|
+
FileUtils.chdir(@active_project_folder) do
|
134
|
+
system "rake -T > #{@stdout} 2> #{@stdout}"
|
135
|
+
end
|
136
|
+
actual_output = File.read(@stdout)
|
137
|
+
actual_output.should match(/^rake\s+\w+\s+#\s.*/)
|
138
|
+
end
|
139
|
+
|
140
|
+
Then /^task 'rake (.*)' is executed successfully$/ do |task|
|
141
|
+
@stdout.should_not be_nil
|
142
|
+
actual_output = File.read(@stdout)
|
143
|
+
actual_output.should_not match(/^Don't know how to build task '#{task}'/)
|
144
|
+
actual_output.should_not match(/Error/i)
|
145
|
+
end
|
146
|
+
|
147
|
+
Then /^gem spec key '(.*)' contains \/(.*)\/$/ do |key, regex|
|
148
|
+
FileUtils.chdir @active_project_folder do
|
149
|
+
gem_file = Dir["pkg/*.gem"].first
|
150
|
+
gem_spec = Gem::Specification.from_yaml(`gem spec #{gem_file}`)
|
151
|
+
spec_value = gem_spec.send(key.to_sym)
|
152
|
+
spec_value.to_s.should match(/#{regex}/)
|
153
|
+
end
|
154
|
+
end
|
data/lib/newgem.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: Can deploy a website to a remote server via rsycn
|
2
|
+
In order to promote and educate people about this project
|
3
|
+
As a website maintainer
|
4
|
+
I want a simple helper to generate and push a website to a remote server
|
5
|
+
|
6
|
+
Scenario: Deploy project website via local rsync
|
7
|
+
Given copy this project for test
|
8
|
+
Given a safe folder for dummy deployment
|
9
|
+
Given project website configuration for safe folder on local machine
|
10
|
+
When task 'rake website' is invoked
|
11
|
+
Then file 'website/index.html' is created
|
12
|
+
Then remote file 'index.html' is created after local rsync
|
13
|
+
Then remote folder 'rdoc' is created after local rsync
|
14
|
+
|
@@ -31,7 +31,11 @@ class ExecutableGenerator < RubiGen::Base
|
|
31
31
|
# App stub
|
32
32
|
m.template "bin/app.rb.erb", "bin/#{bin_name}"
|
33
33
|
m.template "lib/app/cli.rb.erb", "lib/#{bin_name}/cli.rb"
|
34
|
-
|
34
|
+
if using_rspec?
|
35
|
+
m.template "spec/cli_spec.rb.erb", "spec/#{bin_name}_cli_spec.rb"
|
36
|
+
else
|
37
|
+
m.template "test/test_cli.rb.erb", "test/test_#{bin_name}_cli.rb"
|
38
|
+
end
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -56,4 +60,8 @@ EOS
|
|
56
60
|
def extract_options
|
57
61
|
@author = options[:author]
|
58
62
|
end
|
63
|
+
|
64
|
+
def using_rspec?
|
65
|
+
!Dir[File.join(destination_root, 'spec')].empty?
|
66
|
+
end
|
59
67
|
end
|
@@ -2,7 +2,7 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
module <%= module_name %>
|
4
4
|
class CLI
|
5
|
-
def self.execute
|
5
|
+
def self.execute(arguments=[])
|
6
6
|
|
7
7
|
# NOTE: the option -p/--path= is given as an example, and should be replaced in your application.
|
8
8
|
|
@@ -26,7 +26,7 @@ module <%= module_name %>
|
|
26
26
|
"Default: ~") { |arg| OPTIONS[:path] = arg }
|
27
27
|
opts.on("-h", "--help",
|
28
28
|
"Show this help message.") { puts opts; exit }
|
29
|
-
opts.parse!(
|
29
|
+
opts.parse!(arguments)
|
30
30
|
|
31
31
|
if mandatory_options && mandatory_options.find { |option| options[option.to_sym].nil? }
|
32
32
|
puts opts; exit
|
@@ -17,10 +17,9 @@ class InstallCucumberGenerator < RubiGen::Base
|
|
17
17
|
script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
|
18
18
|
|
19
19
|
m.directory 'features/steps'
|
20
|
-
m.
|
21
|
-
|
22
|
-
m.
|
23
|
-
m.file 'cucumber.rake', 'tasks/cucumber.rake'
|
20
|
+
m.file 'features/development.feature', 'features/development.feature'
|
21
|
+
m.file 'features/steps/common.rb', 'features/steps/common.rb'
|
22
|
+
m.template 'features/steps/env.rb.erb', 'features/steps/env.rb'
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Feature: Development processes of newgem itself (rake tasks)
|
2
|
+
|
3
|
+
As a Newgem maintainer or contributor
|
4
|
+
I want rake tasks to maintain and release the gem
|
5
|
+
So that I can spend time on the tests and code, and not excessive time on maintenance processes
|
6
|
+
|
7
|
+
Scenario: Generate RubyGem
|
8
|
+
Given this project is active project folder
|
9
|
+
And 'pkg' folder is deleted
|
10
|
+
When task 'rake gem' is invoked
|
11
|
+
Then folder 'pkg' is created
|
12
|
+
And file matching 'pkg/*.gem' is created else you should run "rake manifest:refresh" to fix this
|
13
|
+
And gem spec key 'rdoc_options' contains /--mainREADME.rdoc/
|
@@ -0,0 +1,154 @@
|
|
1
|
+
Given %r{^a safe folder} do
|
2
|
+
FileUtils.rm_rf @tmp_root = File.dirname(__FILE__) + "/../../tmp"
|
3
|
+
FileUtils.mkdir_p @tmp_root
|
4
|
+
@lib_path = File.expand_path(File.dirname(__FILE__) + '/../../lib')
|
5
|
+
end
|
6
|
+
|
7
|
+
Given /^this project is active project folder/ do
|
8
|
+
Given "a safe folder"
|
9
|
+
@active_project_folder = File.expand_path(File.dirname(__FILE__) + "/../..")
|
10
|
+
end
|
11
|
+
|
12
|
+
Given /^env variable \$([\w_]+) set to '(.*)'/ do |env_var, value|
|
13
|
+
ENV[env_var] = value
|
14
|
+
end
|
15
|
+
|
16
|
+
def force_local_lib_override(project_name = @project_name)
|
17
|
+
rakefile = File.read(File.join(project_name, 'Rakefile'))
|
18
|
+
File.open(File.join(project_name, 'Rakefile'), "w+") do |f|
|
19
|
+
f << "$:.unshift('#{@lib_path}')\n"
|
20
|
+
f << rakefile
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def setup_active_project_folder project_name
|
25
|
+
@active_project_folder = File.join(@tmp_root, project_name)
|
26
|
+
@project_name = project_name
|
27
|
+
end
|
28
|
+
|
29
|
+
Given /^'(.*)' folder is deleted/ do |folder|
|
30
|
+
FileUtils.chdir @active_project_folder do
|
31
|
+
FileUtils.rm_rf folder
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
When %r{^'(.*)' generator is invoked with arguments '(.*)'$} do |generator, arguments|
|
36
|
+
FileUtils.chdir(@active_project_folder) do
|
37
|
+
if Object.const_defined?("APP_ROOT")
|
38
|
+
APP_ROOT.replace(FileUtils.pwd)
|
39
|
+
else
|
40
|
+
APP_ROOT = FileUtils.pwd
|
41
|
+
end
|
42
|
+
run_generator(generator, arguments.split(' '), SOURCES)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
When /^run executable '(.*)' with arguments '(.*)'$/ do |executable, arguments|
|
47
|
+
@stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
|
48
|
+
FileUtils.chdir(@active_project_folder) do
|
49
|
+
system "ruby #{executable} #{arguments} > #{@stdout}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
When /^task 'rake (.*)' is invoked$/ do |task|
|
54
|
+
@stdout = File.expand_path(File.join(@tmp_root, "tests.out"))
|
55
|
+
FileUtils.chdir(@active_project_folder) do
|
56
|
+
system "rake #{task} --trace > #{@stdout} 2> #{@stdout}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Then %r{^folder '(.*)' is created} do |folder|
|
61
|
+
FileUtils.chdir @active_project_folder do
|
62
|
+
File.exists?(folder).should be_true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
Then %r{^file '(.*)' (is|is not) created} do |file, is|
|
67
|
+
FileUtils.chdir @active_project_folder do
|
68
|
+
File.exists?(file).should(is == 'is' ? be_true : be_false)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
Then /^file matching '(.*)' is created/ do |pattern|
|
73
|
+
FileUtils.chdir @active_project_folder do
|
74
|
+
Dir[pattern].should_not be_empty
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
Then /^gem file '(.*)' and generated file '(.*)' should be the same$/ do |gem_file, project_file|
|
79
|
+
File.exists?(gem_file).should be_true
|
80
|
+
File.exists?(project_file).should be_true
|
81
|
+
gem_file_contents = File.read(File.dirname(__FILE__) + "/../../#{gem_file}")
|
82
|
+
project_file_contents = File.read(File.join(@active_project_folder, project_file))
|
83
|
+
project_file_contents.should == gem_file_contents
|
84
|
+
end
|
85
|
+
|
86
|
+
Then %r{^output same as contents of '(.*)'$} do |file|
|
87
|
+
expected_output = File.read(File.join(File.dirname(__FILE__) + "/../expected_outputs", file))
|
88
|
+
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
89
|
+
actual_output.should == expected_output
|
90
|
+
end
|
91
|
+
|
92
|
+
Then %r{^(does|does not) invoke generator '(.*)'$} do |does_invoke, generator|
|
93
|
+
actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}")
|
94
|
+
does_invoke == "does" ?
|
95
|
+
actual_output.should(match(/dependency\s+#{generator}/)) :
|
96
|
+
actual_output.should_not(match(/dependency\s+#{generator}/))
|
97
|
+
end
|
98
|
+
|
99
|
+
Then /^help options '(.*)' and '(.*)' are displayed$/ do |opt1, opt2|
|
100
|
+
actual_output = File.read(@stdout)
|
101
|
+
actual_output.should match(/#{opt1}/)
|
102
|
+
actual_output.should match(/#{opt2}/)
|
103
|
+
end
|
104
|
+
|
105
|
+
Then /^output (does|does not) match \/(.*)\/$/ do |does, regex|
|
106
|
+
actual_output = File.read(@stdout)
|
107
|
+
(does == 'does') ?
|
108
|
+
actual_output.should(match(/#{regex}/)) :
|
109
|
+
actual_output.should_not(match(/#{regex}/))
|
110
|
+
end
|
111
|
+
|
112
|
+
Then /^all (\d+) tests pass$/ do |expected_test_count|
|
113
|
+
expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors}
|
114
|
+
actual_output = File.read(@stdout)
|
115
|
+
actual_output.should match(expected)
|
116
|
+
end
|
117
|
+
|
118
|
+
Then /^all (\d+) examples pass$/ do |expected_test_count|
|
119
|
+
expected = %r{^#{expected_test_count} examples?, 0 failures}
|
120
|
+
actual_output = File.read(@stdout)
|
121
|
+
actual_output.should match(expected)
|
122
|
+
end
|
123
|
+
|
124
|
+
Then /^yaml file '(.*)' contains (\{.*\})/ do |file, yaml|
|
125
|
+
FileUtils.chdir @active_project_folder do
|
126
|
+
yaml = eval yaml
|
127
|
+
YAML.load(File.read(file)).should == yaml
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
Then /^Rakefile can display tasks successfully$/ do
|
132
|
+
@stdout = File.expand_path(File.join(@tmp_root, "rakefile.out"))
|
133
|
+
FileUtils.chdir(@active_project_folder) do
|
134
|
+
system "rake -T > #{@stdout} 2> #{@stdout}"
|
135
|
+
end
|
136
|
+
actual_output = File.read(@stdout)
|
137
|
+
actual_output.should match(/^rake\s+\w+\s+#\s.*/)
|
138
|
+
end
|
139
|
+
|
140
|
+
Then /^task 'rake (.*)' is executed successfully$/ do |task|
|
141
|
+
@stdout.should_not be_nil
|
142
|
+
actual_output = File.read(@stdout)
|
143
|
+
actual_output.should_not match(/^Don't know how to build task '#{task}'/)
|
144
|
+
actual_output.should_not match(/Error/i)
|
145
|
+
end
|
146
|
+
|
147
|
+
Then /^gem spec key '(.*)' contains \/(.*)\/$/ do |key, regex|
|
148
|
+
FileUtils.chdir @active_project_folder do
|
149
|
+
gem_file = Dir["pkg/*.gem"].first
|
150
|
+
gem_spec = Gem::Specification.from_yaml(`gem spec #{gem_file}`)
|
151
|
+
spec_value = gem_spec.send(key.to_sym)
|
152
|
+
spec_value.to_s.should match(/#{regex}/)
|
153
|
+
end
|
154
|
+
end
|
File without changes
|
data/tasks/deployment.rake
CHANGED
@@ -24,7 +24,7 @@ task :check_version do
|
|
24
24
|
exit
|
25
25
|
end
|
26
26
|
unless ENV['VERSION'] == $hoe.version
|
27
|
-
puts "Please update your
|
27
|
+
puts "Please update your lib/#{$hoe.name}.rb to match the release version, currently #{$hoe.version}"
|
28
28
|
exit
|
29
29
|
end
|
30
30
|
end
|
@@ -31,8 +31,6 @@ class TestInstallCucumberGenerator < Test::Unit::TestCase
|
|
31
31
|
assert_generated_file("features/steps/env.rb") do |body|
|
32
32
|
assert_match(/#{PROJECT_NAME}/, body)
|
33
33
|
end
|
34
|
-
assert_directory_exists("tasks")
|
35
|
-
assert_generated_file("tasks/cucumber.rake")
|
36
34
|
end
|
37
35
|
|
38
36
|
private
|
@@ -39,8 +39,8 @@ class TestNewgemGenerator < Test::Unit::TestCase
|
|
39
39
|
assert_manifest_complete
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
43
|
-
run_generator('newgem', [APP_ROOT], sources)
|
42
|
+
def test_newgem_with_website
|
43
|
+
run_generator('newgem', [APP_ROOT], sources, {:enable_website => true})
|
44
44
|
|
45
45
|
%w[txt2html].each do |file|
|
46
46
|
assert_generated_file("script/#{file}")
|
@@ -54,7 +54,7 @@ class TestNewgemGenerator < Test::Unit::TestCase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_newgem_with_no_website
|
57
|
-
run_generator('newgem', [APP_ROOT], sources
|
57
|
+
run_generator('newgem', [APP_ROOT], sources)
|
58
58
|
|
59
59
|
assert !File.exists?("#{APP_ROOT}/script/txt2html"), "No script/txt2html should be generated"
|
60
60
|
assert !File.exists?("#{APP_ROOT}/website"), "No website folder should be generated"
|
data/website/index.html
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
<div id="version"> <!-- class="clickable" onclick='document.location = "http://rubyforge.org/projects/newgem"; return true' -->
|
41
41
|
<p>Get Version</p>
|
42
|
-
<a href="http://rubyforge.org/projects/newgem" class="numbers">1.0.
|
42
|
+
<a href="http://rubyforge.org/projects/newgem" class="numbers">1.0.4</a>
|
43
43
|
<p>Featured in</p>
|
44
44
|
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2FBeginning-Ruby-Novice-Professional-Experts%2Fdp%2F1590597664%2F&tag=drnic-20&linkCode=ur2&camp=1789&creative=9325" class="book"><img src="images/beginning-ruby.jpg" /></a>
|
45
45
|
</div>
|
@@ -128,7 +128,7 @@ Important
|
|
128
128
|
<p><span class="caps">NOTE</span>: Currently, the initial <code>index.txt</code> file includes my details not yours. Currently you need to change this manually.</p>
|
129
129
|
<p>If you don’t want a website, remove the <code>website</code> related files from the Manifest.txt.</p>
|
130
130
|
<h3>Change the gems version number</h3>
|
131
|
-
<p>The version number is set in the file <code>lib/#gem name
|
131
|
+
<p>The version number is set in the file <code>lib/#gem name#.rb</code>. Update it as appropriate with major, minor and bug fix numbers. This value will be used when generating your website, for example.</p>
|
132
132
|
<h3>Check the manifest</h3>
|
133
133
|
<blockquote>Manifest: a customs document listing the contents put on a ship or plane.</blockquote>
|
134
134
|
<p><cite><a href="http://www.google.com/search?q=define%3Amanifest">Google – define:manifest</a></cite></p>
|
@@ -224,7 +224,7 @@ rake install_gem</pre>
|
|
224
224
|
<h2>Contact</h2>
|
225
225
|
<p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>.</p>
|
226
226
|
<p class="coda">
|
227
|
-
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>,
|
227
|
+
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 31st October 2008<br>
|
228
228
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
229
229
|
</p>
|
230
230
|
</div>
|
data/website/index.txt
CHANGED
@@ -96,7 +96,7 @@ If you don't want a website, remove the <code>website</code> related files from
|
|
96
96
|
|
97
97
|
h3. Change the gems version number
|
98
98
|
|
99
|
-
The version number is set in the file <code>lib/#gem name
|
99
|
+
The version number is set in the file <code>lib/#gem name#.rb</code>. Update it as appropriate with major, minor and bug fix numbers. This value will be used when generating your website, for example.
|
100
100
|
|
101
101
|
h3. Check the manifest
|
102
102
|
|
data/website/rubyforge.html
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
<div id="version"> <!-- class="clickable" onclick='document.location = "http://rubyforge.org/projects/newgem"; return true' -->
|
41
41
|
<p>Get Version</p>
|
42
|
-
<a href="http://rubyforge.org/projects/newgem" class="numbers">1.0.
|
42
|
+
<a href="http://rubyforge.org/projects/newgem" class="numbers">1.0.4</a>
|
43
43
|
<p>Featured in</p>
|
44
44
|
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2FBeginning-Ruby-Novice-Professional-Experts%2Fdp%2F1590597664%2F&tag=drnic-20&linkCode=ur2&camp=1789&creative=9325" class="book"><img src="images/beginning-ruby.jpg" /></a>
|
45
45
|
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newgem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-01 00:00:00 +10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -70,7 +70,7 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
73
|
+
version: 1.1.8
|
74
74
|
version:
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: hoe
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- PostInstall.txt
|
112
112
|
- README.rdoc
|
113
113
|
- Rakefile
|
114
|
+
- TODO.markdown
|
114
115
|
- app_generators/newgem/newgem_generator.rb
|
115
116
|
- app_generators/newgem/templates/History.txt
|
116
117
|
- app_generators/newgem/templates/PostInstall.txt
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- features/newgem_cli.feature
|
148
149
|
- features/rubygem_tasks.feature
|
149
150
|
- features/steps/cli.rb
|
151
|
+
- features/steps/common.rb
|
150
152
|
- features/steps/env.rb
|
151
153
|
- features/steps/rubygems.rb
|
152
154
|
- lib/hoe-patched.rb
|
@@ -158,6 +160,7 @@ files:
|
|
158
160
|
- newgem_generators/install_website/USAGE
|
159
161
|
- newgem_generators/install_website/install_website_generator.rb
|
160
162
|
- newgem_generators/install_website/templates/config/website.yml.sample.erb
|
163
|
+
- newgem_generators/install_website/templates/features/website.feature
|
161
164
|
- newgem_generators/install_website/templates/script/txt2html
|
162
165
|
- newgem_generators/install_website/templates/script/win_script.cmd
|
163
166
|
- newgem_generators/install_website/templates/tasks/website.rake
|
@@ -179,6 +182,7 @@ files:
|
|
179
182
|
- rubygems_generators/executable/executable_generator.rb
|
180
183
|
- rubygems_generators/executable/templates/bin/app.rb.erb
|
181
184
|
- rubygems_generators/executable/templates/lib/app/cli.rb.erb
|
185
|
+
- rubygems_generators/executable/templates/spec/cli_spec.rb.erb
|
182
186
|
- rubygems_generators/executable/templates/test/test_cli.rb.erb
|
183
187
|
- rubygems_generators/extconf/USAGE
|
184
188
|
- rubygems_generators/extconf/extconf_generator.rb
|
@@ -190,8 +194,9 @@ files:
|
|
190
194
|
- rubygems_generators/extconf/templates/tasks/extconf_name.rake
|
191
195
|
- rubygems_generators/extconf/templates/test/test.rb.erb
|
192
196
|
- rubygems_generators/install_cucumber/install_cucumber_generator.rb
|
193
|
-
- rubygems_generators/install_cucumber/templates/
|
194
|
-
- rubygems_generators/install_cucumber/templates/
|
197
|
+
- rubygems_generators/install_cucumber/templates/features/development.feature
|
198
|
+
- rubygems_generators/install_cucumber/templates/features/steps/common.rb
|
199
|
+
- rubygems_generators/install_cucumber/templates/features/steps/env.rb.erb
|
195
200
|
- rubygems_generators/install_jruby/USAGE
|
196
201
|
- rubygems_generators/install_jruby/install_jruby_generator.rb
|
197
202
|
- rubygems_generators/install_jruby/templates/tasks/jruby.rake
|