newgem 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|