simple-gem 0.5.1 → 0.6.0
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/Rakefile +13 -0
- data/bin/simple-gem +4 -1
- data/lib/simple_gem/gem.rb +46 -28
- data/lib/simple_gem/version.rb +5 -5
- data/templates/Gemfile.erb +2 -0
- data/templates/README.rdoc.erb +4 -4
- data/templates/Rakefile.erb +20 -7
- data/templates/gitignore.erb +2 -1
- data/templates/lib.rb.erb +1 -1
- data/templates/lib_version.rb.erb +4 -4
- data/templates/rvmrc.erb +1 -0
- data/templates/test.rb.erb +3 -3
- data/templates/test_helper.rb.erb +1 -1
- data/test/simple_gem/gem_test.rb +37 -29
- metadata +86 -7
data/Rakefile
CHANGED
@@ -18,6 +18,12 @@ spec = Gem::Specification.new do |s|
|
|
18
18
|
s.homepage = 'http://sneaq.net'
|
19
19
|
s.executables = ['simple-gem']
|
20
20
|
s.files = %w(README.rdoc Rakefile) + Dir.glob("{lib,test,templates}/**/*")
|
21
|
+
|
22
|
+
s.add_development_dependency('rake', '~> 0.8.0')
|
23
|
+
s.add_development_dependency('bundler', '~> 1.0.0')
|
24
|
+
s.add_development_dependency('jnunemaker-matchy', '~> 0.4.0')
|
25
|
+
s.add_development_dependency('shoulda', '~> 2.11.0')
|
26
|
+
s.add_development_dependency('mocha', '~> 0.9.0')
|
21
27
|
end
|
22
28
|
|
23
29
|
Rake::GemPackageTask.new(spec) do |pkg|
|
@@ -28,4 +34,11 @@ Rake::TestTask.new do |t|
|
|
28
34
|
t.libs << 'test'
|
29
35
|
t.test_files = FileList["test/**/*_test.rb"]
|
30
36
|
t.verbose = true
|
37
|
+
end
|
38
|
+
|
39
|
+
desc 'Generate the gemspec for this Gem'
|
40
|
+
task :gemspec do
|
41
|
+
file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
|
42
|
+
File.open(file, 'w') {|f| f << spec.to_ruby }
|
43
|
+
puts "Created gemspec: #{file}"
|
31
44
|
end
|
data/bin/simple-gem
CHANGED
@@ -4,7 +4,10 @@ require 'simple_gem'
|
|
4
4
|
|
5
5
|
if ARGV[0]
|
6
6
|
gem = SimpleGem::Gem.new(`pwd`.strip, ARGV[0])
|
7
|
-
gem.
|
7
|
+
gem.generate_structure
|
8
|
+
gem.generate_gemspec
|
9
|
+
|
10
|
+
$stderr.puts "Generated new gem structure for #{gem.name}"
|
8
11
|
else
|
9
12
|
puts "Please specify a name for your gem"
|
10
13
|
end
|
data/lib/simple_gem/gem.rb
CHANGED
@@ -1,59 +1,77 @@
|
|
1
1
|
module SimpleGem
|
2
2
|
class Gem
|
3
|
-
|
4
|
-
attr_reader :root_path
|
5
|
-
|
3
|
+
|
4
|
+
attr_reader :root_path
|
5
|
+
|
6
6
|
def initialize(path, name)
|
7
7
|
@root_path = path
|
8
|
-
|
8
|
+
@name = name
|
9
9
|
end
|
10
|
-
|
11
|
-
def name
|
12
|
-
|
10
|
+
|
11
|
+
def name
|
12
|
+
sanitized_name
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def module_name
|
16
16
|
transform_name {|part| part.capitalize }
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def ruby_name
|
20
20
|
transform_name('_') {|part| part.downcase }
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
|
23
|
+
def generate_structure
|
24
|
+
generate_gem_directory
|
25
25
|
generate_subdirectories
|
26
26
|
generate_file('gitignore.erb', '.gitignore')
|
27
|
-
generate_file('
|
28
|
-
generate_file('
|
27
|
+
generate_file('rvmrc.erb', '.rvmrc')
|
28
|
+
generate_file('lib.rb.erb', "lib/#{ruby_name}.rb")
|
29
|
+
generate_file('lib_version.rb.erb', "lib/#{ruby_name}/version.rb")
|
29
30
|
generate_file('Rakefile.erb', 'Rakefile')
|
31
|
+
generate_file('Gemfile.erb', 'Gemfile')
|
30
32
|
generate_file('README.rdoc.erb', 'README.rdoc')
|
31
33
|
generate_file('test_helper.rb.erb', 'test/test_helper.rb')
|
32
|
-
generate_file('test.rb.erb', "test/unit/#{
|
34
|
+
generate_file('test.rb.erb', "test/unit/#{ruby_name}_test.rb")
|
33
35
|
end
|
34
|
-
|
36
|
+
|
37
|
+
def generate_gemspec
|
38
|
+
Dir.chdir(gem_path) { `rake gemspec 2>&1` }
|
39
|
+
end
|
40
|
+
|
35
41
|
private
|
42
|
+
|
43
|
+
def sanitized_name
|
44
|
+
@name.gsub(/([A-Z])([a-z])/, '_\1\2').sub(/^_/, '').downcase
|
45
|
+
end
|
46
|
+
|
36
47
|
def transform_name(glue = nil, &block)
|
37
|
-
|
48
|
+
name.split(/[_-]/).map {|part| block.call(part) }.join(glue)
|
38
49
|
end
|
39
|
-
|
40
|
-
def
|
41
|
-
FileUtils.mkdir(
|
50
|
+
|
51
|
+
def generate_gem_directory
|
52
|
+
FileUtils.mkdir(gem_path)
|
42
53
|
end
|
43
|
-
|
54
|
+
|
44
55
|
def generate_subdirectories
|
45
|
-
['lib', 'test', "lib/#{
|
46
|
-
FileUtils.mkdir(
|
56
|
+
['lib', 'test', "lib/#{ruby_name}", 'test/unit'].each do |dir|
|
57
|
+
FileUtils.mkdir(path_to(dir))
|
47
58
|
end
|
48
59
|
end
|
49
|
-
|
60
|
+
|
50
61
|
def generate_file(source, output)
|
51
|
-
source_file = File.
|
52
|
-
|
53
|
-
|
62
|
+
source_file = File.expand_path("../../../templates/#{source}", __FILE__)
|
63
|
+
|
54
64
|
erb = ERB.new(File.read(source_file))
|
55
|
-
File.open(
|
65
|
+
File.open(path_to(output), 'w') {|f| f << erb.result(binding) }
|
56
66
|
end
|
57
|
-
|
67
|
+
|
68
|
+
def gem_path
|
69
|
+
"#{root_path}/#{name}"
|
70
|
+
end
|
71
|
+
|
72
|
+
def path_to(target)
|
73
|
+
"#{gem_path}/#{target}"
|
74
|
+
end
|
75
|
+
|
58
76
|
end
|
59
77
|
end
|
data/lib/simple_gem/version.rb
CHANGED
data/templates/README.rdoc.erb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
= <%=
|
1
|
+
= <%= module_name %>
|
2
2
|
|
3
3
|
== Description
|
4
4
|
|
5
|
-
Describe your gem here ...
|
5
|
+
Describe your gem here ...
|
6
6
|
|
7
7
|
== Installation
|
8
8
|
|
9
|
-
|
9
|
+
gem install <%= name %>
|
10
10
|
|
11
11
|
== Usage
|
12
12
|
|
13
|
-
require '<%=
|
13
|
+
require '<%= ruby_name %>'
|
14
14
|
|
15
15
|
== License
|
16
16
|
|
data/templates/Rakefile.erb
CHANGED
@@ -2,11 +2,11 @@ require 'rubygems'
|
|
2
2
|
require 'rake/gempackagetask'
|
3
3
|
require 'rake/testtask'
|
4
4
|
|
5
|
-
require File.join(File.dirname(__FILE__), %w(lib <%=
|
5
|
+
require File.join(File.dirname(__FILE__), %w(lib <%= ruby_name %> version))
|
6
6
|
|
7
7
|
spec = Gem::Specification.new do |s|
|
8
|
-
s.name = '<%=
|
9
|
-
s.version = <%=
|
8
|
+
s.name = '<%= name %>'
|
9
|
+
s.version = <%= module_name %>::Version.to_s
|
10
10
|
s.has_rdoc = true
|
11
11
|
s.extra_rdoc_files = %w(README.rdoc)
|
12
12
|
s.rdoc_options = %w(--main README.rdoc)
|
@@ -15,9 +15,15 @@ spec = Gem::Specification.new do |s|
|
|
15
15
|
s.email = 'user@example.com'
|
16
16
|
s.homepage = 'http://my-site.net'
|
17
17
|
s.files = %w(README.rdoc Rakefile) + Dir.glob("{lib,test}/**/*")
|
18
|
-
# s.executables = ['<%=
|
19
|
-
|
18
|
+
# s.executables = ['<%= name %>']
|
19
|
+
|
20
20
|
# s.add_dependency('gem_name', '~> 0.0.1')
|
21
|
+
|
22
|
+
s.add_development_dependency('rake', '~> 0.8.0')
|
23
|
+
s.add_development_dependency('bundler', '~> 1.0.0')
|
24
|
+
s.add_development_dependency('jnunemaker-matchy', '~> 0.4.0')
|
25
|
+
s.add_development_dependency('shoulda', '~> 2.11.0')
|
26
|
+
s.add_development_dependency('mocha', '~> 0.9.0')
|
21
27
|
end
|
22
28
|
|
23
29
|
Rake::GemPackageTask.new(spec) do |pkg|
|
@@ -44,10 +50,17 @@ begin
|
|
44
50
|
t.verbose = true
|
45
51
|
t.rcov_opts = options
|
46
52
|
end
|
47
|
-
|
53
|
+
|
48
54
|
task :default => :coverage
|
49
|
-
|
55
|
+
|
50
56
|
rescue LoadError
|
51
57
|
warn "\n**** Install rcov (gem install rcov) to get coverage stats ****\n"
|
52
58
|
task :default => :test
|
59
|
+
end
|
60
|
+
|
61
|
+
desc 'Generate the gemspec for this Gem'
|
62
|
+
task :gemspec do
|
63
|
+
file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
|
64
|
+
File.open(file, 'w') {|f| f << spec.to_ruby }
|
65
|
+
puts "Created gemspec: #{file}"
|
53
66
|
end
|
data/templates/gitignore.erb
CHANGED
data/templates/lib.rb.erb
CHANGED
data/templates/rvmrc.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2@<%= name %> --create
|
data/templates/test.rb.erb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), %w(.. test_helper)))
|
2
2
|
|
3
|
-
class <%=
|
3
|
+
class <%= module_name %>Test < Test::Unit::TestCase
|
4
4
|
|
5
|
-
context "An instance of the <%=
|
5
|
+
context "An instance of the <%= module_name %> class" do
|
6
6
|
|
7
7
|
should "flunk" do
|
8
8
|
flunk "Please provide some tests"
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
data/test/simple_gem/gem_test.rb
CHANGED
@@ -27,47 +27,43 @@ module SimpleGem
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
should_generate :name => 'simple_gem',
|
31
|
-
:module_name => 'SimpleGem',
|
32
|
-
:ruby_name => 'simple_gem',
|
30
|
+
should_generate :name => 'simple_gem',
|
31
|
+
:module_name => 'SimpleGem',
|
32
|
+
:ruby_name => 'simple_gem',
|
33
33
|
:from => 'SimpleGem'
|
34
34
|
|
35
35
|
|
36
|
-
should_generate :name => 'simple-gem',
|
37
|
-
:module_name => 'SimpleGem',
|
38
|
-
:ruby_name => 'simple_gem',
|
36
|
+
should_generate :name => 'simple-gem',
|
37
|
+
:module_name => 'SimpleGem',
|
38
|
+
:ruby_name => 'simple_gem',
|
39
39
|
:from => 'simple-gem'
|
40
40
|
|
41
|
-
should_generate :name => 'simple_gem',
|
42
|
-
:module_name => 'SimpleGem',
|
43
|
-
:ruby_name => 'simple_gem',
|
41
|
+
should_generate :name => 'simple_gem',
|
42
|
+
:module_name => 'SimpleGem',
|
43
|
+
:ruby_name => 'simple_gem',
|
44
44
|
:from => 'simple_gem'
|
45
45
|
|
46
|
-
should_generate :name => 'simple_gem',
|
47
|
-
:module_name => 'SimpleGem',
|
48
|
-
:ruby_name => 'simple_gem',
|
46
|
+
should_generate :name => 'simple_gem',
|
47
|
+
:module_name => 'SimpleGem',
|
48
|
+
:ruby_name => 'simple_gem',
|
49
49
|
:from => 'simpleGem'
|
50
50
|
|
51
51
|
context "An instance of the Gem class" do
|
52
|
-
setup
|
52
|
+
setup do
|
53
|
+
@tmp_dir = File.expand_path('../../../tmp', __FILE__)
|
54
|
+
FileUtils.mkdir(@tmp_dir) unless File.exist?(@tmp_dir)
|
53
55
|
|
54
|
-
|
55
|
-
Gem.new(@
|
56
|
+
@name = 'simple-gem'
|
57
|
+
@gem = Gem.new(@tmp_dir, @name)
|
56
58
|
end
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
@tmp_dir = File.dirname(__FILE__) + '/../../tmp'
|
62
|
-
FileUtils.mkdir(@tmp_dir) unless File.exist?(@tmp_dir)
|
63
|
-
|
64
|
-
@name = 'simple-gem'
|
65
|
-
Gem.new(@tmp_dir, @name).generate
|
66
|
-
end
|
60
|
+
should "know its root path" do
|
61
|
+
@gem.root_path.should == @tmp_dir
|
62
|
+
end
|
67
63
|
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
context "when generating the directory structure" do
|
65
|
+
setup { @gem.generate_structure }
|
66
|
+
teardown { FileUtils.rm_rf(@tmp_dir) }
|
71
67
|
|
72
68
|
should "be able to make the root directory" do
|
73
69
|
File.exist?("#{@tmp_dir}/#{@name}").should == true
|
@@ -82,7 +78,7 @@ module SimpleGem
|
|
82
78
|
should "create the main library file" do
|
83
79
|
File.exist?("#{@tmp_dir}/#{@name}/lib/simple_gem.rb").should == true
|
84
80
|
end
|
85
|
-
|
81
|
+
|
86
82
|
should "create the version file" do
|
87
83
|
File.exist?("#{@tmp_dir}/#{@name}/lib/simple_gem/version.rb").should == true
|
88
84
|
end
|
@@ -95,6 +91,10 @@ module SimpleGem
|
|
95
91
|
File.exist?("#{@tmp_dir}/#{@name}/README.rdoc").should == true
|
96
92
|
end
|
97
93
|
|
94
|
+
should "create the Gemfile" do
|
95
|
+
File.exist?("#{@tmp_dir}/#{@name}/Gemfile").should == true
|
96
|
+
end
|
97
|
+
|
98
98
|
should "generate the test helper file" do
|
99
99
|
File.exist?("#{@tmp_dir}/#{@name}/test/test_helper.rb").should == true
|
100
100
|
end
|
@@ -102,11 +102,19 @@ module SimpleGem
|
|
102
102
|
should "generate the test file" do
|
103
103
|
File.exist?("#{@tmp_dir}/#{@name}/test/unit/simple_gem_test.rb").should == true
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
should "generate the .gitignore file" do
|
107
107
|
File.exist?("#{@tmp_dir}/#{@name}/.gitignore").should == true
|
108
108
|
end
|
109
109
|
|
110
|
+
should "generate the .rvmrc file" do
|
111
|
+
File.exist?("#{@tmp_dir}/#{@name}/.rvmrc").should == true
|
112
|
+
end
|
113
|
+
|
114
|
+
should "be able to generate the gemspec" do
|
115
|
+
@gem.generate_gemspec
|
116
|
+
File.exist?("#{@tmp_dir}/#{@name}/simple-gem.gemspec").should == true
|
117
|
+
end
|
110
118
|
end
|
111
119
|
|
112
120
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 6
|
8
|
+
- 0
|
9
|
+
version: 0.6.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Patrick Reagan
|
@@ -14,10 +14,84 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-03-21 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rake
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 8
|
31
|
+
- 0
|
32
|
+
version: 0.8.0
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 0
|
46
|
+
- 0
|
47
|
+
version: 1.0.0
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: jnunemaker-matchy
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
- 4
|
61
|
+
- 0
|
62
|
+
version: 0.4.0
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: shoulda
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
segments:
|
74
|
+
- 2
|
75
|
+
- 11
|
76
|
+
- 0
|
77
|
+
version: 2.11.0
|
78
|
+
type: :development
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: mocha
|
82
|
+
prerelease: false
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
- 9
|
91
|
+
- 0
|
92
|
+
version: 0.9.0
|
93
|
+
type: :development
|
94
|
+
version_requirements: *id005
|
21
95
|
description:
|
22
96
|
email: reaganpr@gmail.com
|
23
97
|
executables:
|
@@ -33,13 +107,16 @@ files:
|
|
33
107
|
- lib/simple_gem/version.rb
|
34
108
|
- lib/simple_gem.rb
|
35
109
|
- test/simple_gem/gem_test.rb
|
110
|
+
- templates/Gemfile.erb
|
36
111
|
- templates/gitignore.erb
|
37
112
|
- templates/lib.rb.erb
|
38
113
|
- templates/lib_version.rb.erb
|
39
114
|
- templates/Rakefile.erb
|
40
115
|
- templates/README.rdoc.erb
|
116
|
+
- templates/rvmrc.erb
|
41
117
|
- templates/test.rb.erb
|
42
118
|
- templates/test_helper.rb.erb
|
119
|
+
- bin/simple-gem
|
43
120
|
has_rdoc: true
|
44
121
|
homepage: http://sneaq.net
|
45
122
|
licenses: []
|
@@ -51,6 +128,7 @@ rdoc_options:
|
|
51
128
|
require_paths:
|
52
129
|
- lib
|
53
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
54
132
|
requirements:
|
55
133
|
- - ">="
|
56
134
|
- !ruby/object:Gem::Version
|
@@ -58,6 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
136
|
- 0
|
59
137
|
version: "0"
|
60
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
61
140
|
requirements:
|
62
141
|
- - ">="
|
63
142
|
- !ruby/object:Gem::Version
|
@@ -67,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
146
|
requirements: []
|
68
147
|
|
69
148
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.3.
|
149
|
+
rubygems_version: 1.3.7
|
71
150
|
signing_key:
|
72
151
|
specification_version: 3
|
73
152
|
summary: Make gems. Simple.
|