newgem 0.9.4 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +13 -2
- data/License.txt +20 -0
- data/Manifest.txt +5 -0
- data/Todo.txt +2 -0
- data/bin/newgem +62 -21
- data/lib/newgem.rb +5 -1
- data/lib/newgem/rubyforge.rb +18 -0
- data/lib/newgem/version.rb +2 -2
- data/templates/License.txt +20 -0
- data/templates/Rakefile +1 -1
- data/templates/spec.rb +4 -0
- data/templates/website/index.txt +3 -1
- data/website/index.html +5 -2
- data/website/index.txt +2 -0
- data/website/rubyforge.html +1 -1
- data/website/version-raw.js +1 -1
- data/website/version.js +1 -1
- metadata +7 -2
data/History.txt
CHANGED
@@ -1,9 +1,20 @@
|
|
1
|
-
+++ 0.
|
1
|
+
+++ 0.10.0 2007-05-19
|
2
2
|
|
3
|
-
+ 3
|
3
|
+
+ 3 major enhancements
|
4
|
+
+ can generate rspec default tests (or still test::unit tests) using --with-test=rspec [thx Robby Russell]
|
5
|
+
+ fetches your full name and email from ~/.rubyforge/user-config.yml (add keys user_name and email)
|
6
|
+
+ 2 minor enhancements
|
7
|
+
+ Generated lib/#{gem_name}.rb includes an empty module
|
8
|
+
+ Generated lib/#{gem_name}.rb does not include "require all", instead you do it manually for each included file
|
9
|
+
|
10
|
+
+++ 0.9.4 2007-05-18
|
11
|
+
|
12
|
+
+ 5 minor enhancements
|
13
|
+
+ Pass your full name into the generator to be inserted into License.txt, index.txt, Rakefile etc
|
4
14
|
+ 'Licence' => 'License' (thx Peter Burns)
|
5
15
|
+ Generates a blank index.html so that 'rake package' works straight away
|
6
16
|
+ Includes :local_deploy which does tasks :website_generate and :install_gem
|
17
|
+
+ License.txt generated + this gem has a License.txt file (MIT license)
|
7
18
|
|
8
19
|
+++ 0.9.3 20/4/2007
|
9
20
|
|
data/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2006-2007 Dr Nic Williams
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest.txt
CHANGED
@@ -1,20 +1,25 @@
|
|
1
1
|
History.txt
|
2
|
+
License.txt
|
2
3
|
Manifest.txt
|
3
4
|
README
|
4
5
|
Rakefile
|
6
|
+
Todo.txt
|
5
7
|
bin/newgem
|
6
8
|
install.rb
|
7
9
|
lib/newgem.rb
|
10
|
+
lib/newgem/rubyforge.rb
|
8
11
|
lib/newgem/version.rb
|
9
12
|
scripts/txt2html
|
10
13
|
scripts/txt2js
|
11
14
|
setup.rb
|
12
15
|
templates/History.txt
|
16
|
+
templates/License.txt
|
13
17
|
templates/Manifest.txt
|
14
18
|
templates/Rakefile
|
15
19
|
templates/app.rb
|
16
20
|
templates/scripts/txt2html
|
17
21
|
templates/setup.rb
|
22
|
+
templates/spec.rb
|
18
23
|
templates/test.rb
|
19
24
|
templates/website/index.html
|
20
25
|
templates/website/index.txt
|
data/Todo.txt
ADDED
data/bin/newgem
CHANGED
@@ -10,12 +10,17 @@ require 'fileutils'
|
|
10
10
|
require 'active_support'
|
11
11
|
require 'optparse'
|
12
12
|
|
13
|
+
require 'newgem'
|
14
|
+
|
13
15
|
templates = File.dirname(__FILE__) + '/../templates/'
|
14
16
|
|
15
17
|
OPTIONS = {
|
16
18
|
:import_path => nil,
|
17
19
|
:version => '0.0.1',
|
18
|
-
:
|
20
|
+
:full_name => nil,
|
21
|
+
:email => nil,
|
22
|
+
:bin_name => nil,
|
23
|
+
:test_framework => 'test::unit'
|
19
24
|
}
|
20
25
|
parser = OptionParser.new do |opts|
|
21
26
|
opts.banner = <<BANNER
|
@@ -33,6 +38,15 @@ BANNER
|
|
33
38
|
opts.on("-i", "--import_path=PATH", String,
|
34
39
|
"Path where your files could be copied from.",
|
35
40
|
"Default: none") { |OPTIONS[:import_path]| }
|
41
|
+
opts.on("-n", "--full_name=PATH", String,
|
42
|
+
"Your name to be inserted into generated files.",
|
43
|
+
"Default: ~/.rubyforge/user-config.yml[user_name]") { |OPTIONS[:full_name]| }
|
44
|
+
opts.on("-e", "--email=PATH", String,
|
45
|
+
"Your email to be inserted into generated files.",
|
46
|
+
"Default: ~/.rubyforge/user-config.yml[email]") { |OPTIONS[:email]| }
|
47
|
+
opts.on("-t", "--test-with=TEST_FRAMEWORK", String,
|
48
|
+
"Your preferred testing framework: Options: test::unit (default), rspec.",
|
49
|
+
"Default: test::unit") { |OPTIONS[:test_framework]| }
|
36
50
|
opts.on("-v", "--version=YOUR_VERSION", String,
|
37
51
|
"Version of the gem you are creating.",
|
38
52
|
"Default: 0.0.1") { |OPTIONS[:version]| }
|
@@ -42,6 +56,14 @@ BANNER
|
|
42
56
|
end
|
43
57
|
OPTIONS[:version] = OPTIONS[:version].to_s.split(/\./)
|
44
58
|
version_str = OPTIONS[:version].join('.')
|
59
|
+
author = OPTIONS[:full_name]
|
60
|
+
email = OPTIONS[:email]
|
61
|
+
unless author && email
|
62
|
+
rubyforge_config = Newgem::Rubyforge.new
|
63
|
+
author ||= rubyforge_config.full_name
|
64
|
+
email ||= rubyforge_config.email
|
65
|
+
end
|
66
|
+
test_framework = OPTIONS[:test_framework]
|
45
67
|
|
46
68
|
gem_name = project_name = ARGV[0]
|
47
69
|
parser.parse!(["-h"]) unless gem_name
|
@@ -52,22 +74,15 @@ lib_project_name = project_name + '/lib/' + project_name
|
|
52
74
|
version = project_name + "/lib/" + project_name + "/version.rb"
|
53
75
|
readme, setup = %w(README.txt setup.rb).
|
54
76
|
collect {|f| project_name + '/' + f}
|
55
|
-
template_files = %w(Rakefile
|
77
|
+
template_files = %w(Rakefile History.txt License.txt Manifest.txt scripts/txt2html website/index.txt website/index.html website/template.rhtml)
|
56
78
|
copy_files = %w(website/javascripts/rounded_corners_lite.inc.js website/stylesheets/screen.css)
|
57
79
|
|
58
|
-
|
59
|
-
test = project_name + "/test"
|
60
80
|
main = project_name + "/lib/" + project_name + ".rb"
|
61
|
-
test_helper = test + "/test_helper.rb"
|
62
|
-
unit_test = test + "/test_" + project_name + ".rb"
|
63
81
|
|
64
82
|
examples = project_name + '/examples'
|
65
83
|
bin = project_name + '/bin'
|
66
84
|
folders = %w( scripts website website/javascripts website/stylesheets)
|
67
85
|
|
68
|
-
# Rakefile variables
|
69
|
-
author = ENV['USERNAME'] || ENV['USER'] || 'you'
|
70
|
-
|
71
86
|
FileUtils.rm_rf project_name
|
72
87
|
|
73
88
|
puts "creating: " + project_name
|
@@ -84,12 +99,12 @@ end
|
|
84
99
|
|
85
100
|
|
86
101
|
puts "creating: " + lib
|
87
|
-
|
102
|
+
FileUtils.mkdir_p lib
|
88
103
|
|
89
104
|
folders.each do |folder|
|
90
105
|
new_folder = project_name + '/' + folder
|
91
106
|
puts "creating: " + new_folder
|
92
|
-
|
107
|
+
FileUtils.mkdir_p new_folder
|
93
108
|
end
|
94
109
|
|
95
110
|
if OPTIONS[:import_path]
|
@@ -99,16 +114,21 @@ if OPTIONS[:import_path]
|
|
99
114
|
end
|
100
115
|
|
101
116
|
puts "creating: " + lib_project_name
|
102
|
-
|
117
|
+
FileUtils.mkdir_p lib_project_name
|
103
118
|
|
104
119
|
puts "creating: " + main
|
105
120
|
File.open(main, 'w') do |file|
|
106
|
-
file <<
|
121
|
+
file << <<-EOS
|
122
|
+
module #{module_name}
|
123
|
+
end
|
124
|
+
|
125
|
+
require '#{module_name}/version'
|
126
|
+
EOS
|
107
127
|
end
|
108
128
|
|
109
129
|
puts "creating: " + version
|
110
130
|
File.open(version, 'w') do |file|
|
111
|
-
file << <<-
|
131
|
+
file << <<-EOS
|
112
132
|
module #{module_name} #:nodoc:
|
113
133
|
module VERSION #:nodoc:
|
114
134
|
MAJOR = #{OPTIONS[:version][0] || '0'}
|
@@ -118,7 +138,7 @@ module #{module_name} #:nodoc:
|
|
118
138
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
119
139
|
end
|
120
140
|
end
|
121
|
-
|
141
|
+
EOS
|
122
142
|
end
|
123
143
|
|
124
144
|
puts "creating: " + bin
|
@@ -139,20 +159,41 @@ else
|
|
139
159
|
bin_names_list = []
|
140
160
|
end
|
141
161
|
|
162
|
+
# Setup spec/test::unit environments
|
163
|
+
# Would like to refactor this...
|
164
|
+
if test_framework == 'rspec'
|
165
|
+
test = project_name + "/spec"
|
166
|
+
test_helper = test + "/spec_helper.rb"
|
167
|
+
test_template = 'spec.rb'
|
168
|
+
unit_test = test + "/" + project_name + "_spec.rb"
|
169
|
+
test_file_prefix = 'spec/NAME_spec'
|
170
|
+
unit_test_template = <<-eos
|
171
|
+
require 'spec'
|
172
|
+
require File.dirname(__FILE__) + '/../lib/#{project_name}'
|
173
|
+
eos
|
174
|
+
else
|
175
|
+
test = project_name + "/test"
|
176
|
+
test_helper = test + "/test_helper.rb"
|
177
|
+
test_template = 'test.rb'
|
178
|
+
unit_test = test + "/test_" + project_name + ".rb"
|
179
|
+
test_file_prefix = 'test/test_NAME'
|
180
|
+
unit_test_template = <<-eos
|
181
|
+
require 'test/unit'
|
182
|
+
require File.dirname(__FILE__) + '/../lib/#{project_name}'
|
183
|
+
eos
|
184
|
+
end
|
142
185
|
|
143
186
|
puts "creating: " + test
|
144
187
|
Dir.mkdir test
|
145
188
|
|
146
189
|
puts "creating: " + test_helper
|
147
190
|
File.open(test_helper, 'w') do |file|
|
148
|
-
file <<
|
149
|
-
require 'test/unit'
|
150
|
-
require File.dirname(__FILE__) + '/../lib/#{project_name}'
|
151
|
-
eos
|
191
|
+
file << unit_test_template
|
152
192
|
end
|
153
193
|
|
154
194
|
puts "creating: " + unit_test
|
155
|
-
|
195
|
+
|
196
|
+
template = File.open(templates + test_template,'r') {|f| f.readlines.join}
|
156
197
|
File.open(unit_test, 'w') do |file|
|
157
198
|
file << eval('"' + template.gsub(/"/, '\"') + '"')
|
158
199
|
end
|
@@ -168,7 +209,7 @@ end
|
|
168
209
|
|
169
210
|
bin_names_list = bin_names_list.collect {|name| 'bin/' + name }.join("\n")
|
170
211
|
bin_names_list += "\n" if bin_names_list.size > 0
|
171
|
-
test_names_list = ['helper.rb',"#{project_name}.rb"].sort.collect {|name| '
|
212
|
+
test_names_list = ['helper.rb',"#{project_name}.rb"].sort.collect {|name| test_file_prefix.gsub('NAME', name) + name }.join("\n")
|
172
213
|
|
173
214
|
template_files.each do |template_file|
|
174
215
|
puts "creating: " + project_name + '/' + template_file
|
data/lib/newgem.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubyforge'
|
3
|
+
|
4
|
+
module Newgem
|
5
|
+
class Rubyforge
|
6
|
+
attr_reader :full_name, :email
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@full_name = rubyforge.userconfig['full_name'] || ENV['NAME'] || 'FIXME full name'
|
10
|
+
@email = rubyforge.userconfig['email'] || ENV['EMAIL'] || 'FIXME email'
|
11
|
+
end
|
12
|
+
|
13
|
+
def rubyforge
|
14
|
+
@rubyforge ||= RubyForge.new(::RubyForge::CONFIG_F)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/newgem/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) #{Time.now.year} #{author}
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/templates/Rakefile
CHANGED
@@ -12,7 +12,7 @@ include FileUtils
|
|
12
12
|
require File.join(File.dirname(__FILE__), 'lib', '#{gem_name}', 'version')
|
13
13
|
|
14
14
|
AUTHOR = '#{author}' # can also be an array of Authors
|
15
|
-
EMAIL = "
|
15
|
+
EMAIL = "#{email}"
|
16
16
|
DESCRIPTION = "description of gem"
|
17
17
|
GEM_NAME = '#{gem_name}' # what ppl will type to install your gem
|
18
18
|
RUBYFORGE_PROJECT = '#{gem_name}' # The unix name for your project
|
data/templates/spec.rb
ADDED
data/templates/website/index.txt
CHANGED
@@ -21,10 +21,12 @@ h2. Forum
|
|
21
21
|
|
22
22
|
"http://groups.google.com/group/#{gem_name}":http://groups.google.com/group/#{gem_name}
|
23
23
|
|
24
|
+
TODO - create Google Group - #{gem_name}
|
25
|
+
|
24
26
|
h2. License
|
25
27
|
|
26
28
|
This code is free to use under the terms of the MIT license.
|
27
29
|
|
28
30
|
h2. Contact
|
29
31
|
|
30
|
-
Comments are welcome. Send an email to "
|
32
|
+
Comments are welcome. Send an email to "#{author}":mailto:#{email}.
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>New Gem Generator</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/newgem"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/newgem" class="numbers">0.
|
36
|
+
<a href="http://rubyforge.org/projects/newgem" class="numbers">0.10.0</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘newgem’</h1>
|
39
39
|
|
@@ -98,6 +98,9 @@ copying: wizzo/website/stylesheets/screen.css
|
|
98
98
|
NOW - update wizzo/Rakefile with gem description, etc
|
99
99
|
</pre>
|
100
100
|
|
101
|
+
<p>As of 0.10.0 – you can generate test::unit or rspec test stubs via the -t,—test-with options</p>
|
102
|
+
|
103
|
+
|
101
104
|
<h3>Setup</h3>
|
102
105
|
|
103
106
|
|
@@ -287,7 +290,7 @@ other stories and things.</p>
|
|
287
290
|
|
288
291
|
<p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>.</p>
|
289
292
|
<p class="coda">
|
290
|
-
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>,
|
293
|
+
<a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 19th May 2007<br>
|
291
294
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
292
295
|
</p>
|
293
296
|
</div>
|
data/website/index.txt
CHANGED
@@ -52,6 +52,8 @@ copying: wizzo/website/stylesheets/screen.css
|
|
52
52
|
NOW - update wizzo/Rakefile with gem description, etc
|
53
53
|
</pre>
|
54
54
|
|
55
|
+
As of 0.10.0 - you can generate test::unit or rspec test stubs via the -t, --test-with options
|
56
|
+
|
55
57
|
h3. Setup
|
56
58
|
|
57
59
|
Now modify the constants at the top of *Rakefile*, with your name, email and the location where you'll host your website for the gem. The defaults are tied to RubyForge for uploading the gems and the website (see below).
|
data/website/rubyforge.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>New Gem Generator</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/newgem"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/newgem" class="numbers">0.
|
36
|
+
<a href="http://rubyforge.org/projects/newgem" class="numbers">0.10.0</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ using ‘rubyforge’</h1>
|
39
39
|
|
data/website/version-raw.js
CHANGED
data/website/version.js
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: newgem
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-05-
|
6
|
+
version: 0.10.0
|
7
|
+
date: 2007-05-19 00:00:00 -07:00
|
8
8
|
summary: Make your own gems at home
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -30,22 +30,27 @@ authors:
|
|
30
30
|
- Dr Nic Williams
|
31
31
|
files:
|
32
32
|
- History.txt
|
33
|
+
- License.txt
|
33
34
|
- Manifest.txt
|
34
35
|
- README
|
35
36
|
- Rakefile
|
37
|
+
- Todo.txt
|
36
38
|
- bin/newgem
|
37
39
|
- install.rb
|
38
40
|
- lib/newgem.rb
|
41
|
+
- lib/newgem/rubyforge.rb
|
39
42
|
- lib/newgem/version.rb
|
40
43
|
- scripts/txt2html
|
41
44
|
- scripts/txt2js
|
42
45
|
- setup.rb
|
43
46
|
- templates/History.txt
|
47
|
+
- templates/License.txt
|
44
48
|
- templates/Manifest.txt
|
45
49
|
- templates/Rakefile
|
46
50
|
- templates/app.rb
|
47
51
|
- templates/scripts/txt2html
|
48
52
|
- templates/setup.rb
|
53
|
+
- templates/spec.rb
|
49
54
|
- templates/test.rb
|
50
55
|
- templates/website/index.html
|
51
56
|
- templates/website/index.txt
|