ore 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.gitignore +10 -0
  2. data/ChangeLog.md +70 -7
  3. data/LICENSE.txt +1 -1
  4. data/README.md +93 -88
  5. data/Rakefile +5 -5
  6. data/data/ore/templates/base/README.md.erb +3 -0
  7. data/data/ore/templates/base/README.rdoc.erb +3 -0
  8. data/data/ore/templates/base/README.tt.erb +3 -0
  9. data/data/ore/templates/base/template.yml +2 -2
  10. data/data/ore/templates/bin/bin/[name].erb +1 -1
  11. data/data/ore/templates/bundler/Gemfile.erb +14 -3
  12. data/data/ore/templates/bundler/template.yml +7 -2
  13. data/data/ore/templates/bundler_tasks/_tasks.erb +1 -0
  14. data/data/ore/templates/bundler_tasks/template.yml +6 -0
  15. data/data/ore/templates/gem_package_task/_tasks.erb +5 -0
  16. data/data/ore/templates/gem_package_task/template.yml +4 -0
  17. data/data/ore/templates/gemspec/[name].gemspec.erb +45 -0
  18. data/data/ore/templates/gemspec/template.yml +2 -0
  19. data/data/ore/templates/{base → gemspec_yml}/[name].gemspec.erb +36 -55
  20. data/data/ore/templates/gemspec_yml/gemspec.yml.erb +41 -0
  21. data/data/ore/templates/gemspec_yml/template.yml +2 -0
  22. data/data/ore/templates/git/.gitignore.erb +3 -0
  23. data/data/ore/templates/git/template.yml +2 -0
  24. data/data/ore/templates/hg/.hgignore.erb +3 -0
  25. data/data/ore/templates/hg/template.yml +2 -0
  26. data/data/ore/templates/jeweler_tasks/_tasks.erb +3 -12
  27. data/data/ore/templates/jeweler_tasks/template.yml +4 -3
  28. data/data/ore/templates/rdoc/_tasks.erb +1 -1
  29. data/data/ore/templates/rdoc/template.yml +3 -0
  30. data/data/ore/templates/rspec/_tasks.erb +1 -1
  31. data/data/ore/templates/rspec/spec/spec_helper.rb.erb +1 -1
  32. data/data/ore/templates/rspec/template.yml +2 -2
  33. data/data/ore/templates/rubygems_tasks/_tasks.erb +14 -0
  34. data/data/ore/templates/rubygems_tasks/template.yml +7 -0
  35. data/data/ore/templates/rvmrc/.rvmrc.erb +9 -15
  36. data/data/ore/templates/yard/_gemfile_development.erb +0 -1
  37. data/data/ore/templates/yard/_tasks.erb +1 -1
  38. data/data/ore/templates/yard/template.yml +5 -2
  39. data/gemspec.yml +5 -7
  40. data/lib/ore.rb +0 -2
  41. data/lib/ore/actions.rb +85 -0
  42. data/lib/ore/cli.rb +2 -32
  43. data/lib/ore/config.rb +20 -20
  44. data/lib/ore/generator.rb +101 -203
  45. data/lib/ore/naming.rb +160 -0
  46. data/lib/ore/options.rb +67 -0
  47. data/lib/ore/template.rb +8 -0
  48. data/lib/ore/template/directory.rb +60 -41
  49. data/lib/ore/template/helpers.rb +55 -7
  50. data/lib/ore/template/template.rb +61 -0
  51. data/ore.gemspec +35 -55
  52. data/spec/gemspec_examples.rb +33 -0
  53. data/spec/generator_spec.rb +188 -70
  54. data/spec/helpers/generator.rb +4 -2
  55. data/spec/helpers/matchers.rb +33 -0
  56. data/spec/naming_spec.rb +56 -0
  57. data/spec/spec_helper.rb +1 -1
  58. metadata +104 -117
  59. data/data/ore/templates/base/.gitignore.erb +0 -3
  60. data/data/ore/templates/base/_gemfile_development.erb +0 -3
  61. data/data/ore/templates/base/gemspec.yml.erb +0 -30
  62. data/data/ore/templates/bundler/_development_dependencies.erb +0 -1
  63. data/data/ore/templates/bundler/_gitignore.erb +0 -2
  64. data/data/ore/templates/bundler/_tasks.erb +0 -3
  65. data/data/ore/templates/jeweler_tasks/_development_dependencies.erb +0 -3
  66. data/data/ore/templates/jeweler_tasks/_gemfile_development.erb +0 -1
  67. data/data/ore/templates/ore_tasks/_development_dependencies.erb +0 -3
  68. data/data/ore/templates/ore_tasks/_gemfile_development.erb +0 -1
  69. data/data/ore/templates/ore_tasks/_tasks.erb +0 -14
  70. data/data/ore/templates/ore_tasks/template.yml +0 -5
  71. data/data/ore/templates/rdoc/_gitignore.erb +0 -1
  72. data/data/ore/templates/rspec/_development_dependencies.erb +0 -3
  73. data/data/ore/templates/rspec/_gemfile_development.erb +0 -1
  74. data/data/ore/templates/yard/_development_dependencies.erb +0 -1
@@ -16,8 +16,10 @@ module Helpers
16
16
  )
17
17
  @generator.invoke_all
18
18
 
19
- @path = Pathname.new(path)
20
- @gemspec = YAML.load_file(@path.join('gemspec.yml'))
19
+ @path = Pathname.new(path)
20
+ @gemspec = Dir.chdir(@path) do
21
+ Gem::Specification.load(@generator.generated_files['[name].gemspec'])
22
+ end
21
23
  end
22
24
 
23
25
  def rspec_opts
@@ -0,0 +1,33 @@
1
+ require 'rspec'
2
+
3
+ RSpec::Matchers.define :have_directory do |*names|
4
+ match do |directory|
5
+ directory.join(*names).directory?
6
+ end
7
+ end
8
+
9
+ RSpec::Matchers.define :have_file do |*names|
10
+ match do |directory|
11
+ directory.join(*names).file?
12
+ end
13
+ end
14
+
15
+ RSpec::Matchers.define :have_executable do |*names|
16
+ match do |directory|
17
+ path = directory.join(*names)
18
+
19
+ path.file? && path.executable?
20
+ end
21
+ end
22
+
23
+ RSpec::Matchers.define :have_dependency do |name|
24
+ match do |gemspec|
25
+ gemspec.dependencies.any? { |dep| dep.name == name }
26
+ end
27
+ end
28
+
29
+ RSpec::Matchers.define :have_development_dependency do |name|
30
+ match do |gemspec|
31
+ gemspec.development_dependencies.any? { |dep| dep.name == name }
32
+ end
33
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+ require 'ore/naming'
3
+
4
+ describe Naming do
5
+ subject do
6
+ obj = Object.new
7
+ obj.extend Ore::Naming
8
+ obj
9
+ end
10
+
11
+ describe "underscore" do
12
+ it "should underscore CamelCase names" do
13
+ subject.underscore('FooBar').should == 'foo_bar'
14
+ end
15
+
16
+ it "should not add leading underscores to Capitalized names" do
17
+ subject.underscore('Foo').should == 'foo'
18
+ end
19
+
20
+ it "should not add tailing underscores to CamelCase names" do
21
+ subject.underscore('FooX').should == 'foox'
22
+ end
23
+
24
+ it "should not add underscores when they already exist" do
25
+ subject.underscore('Foo_Bar').should == 'foo_bar'
26
+ end
27
+ end
28
+
29
+ it "should guess the module names from a project name" do
30
+ subject.modules_of('foo-bar').should == ['Foo', 'Bar']
31
+ end
32
+
33
+ it "should filter out obvious names from the module names" do
34
+ subject.modules_of('ruby-foo').should == ['Foo']
35
+ end
36
+
37
+ it "should recognize common acronyms in project names" do
38
+ subject.modules_of('ffi-bar').should == ['FFI', 'Bar']
39
+ end
40
+
41
+ it "should guess the namespace from a project name" do
42
+ subject.namespace_of('foo-bar').should == 'Foo::Bar'
43
+ end
44
+
45
+ it "should guess the namespace directories from a project name" do
46
+ subject.namespace_dirs_of('foo-bar').should == ['foo', 'bar']
47
+ end
48
+
49
+ it "should filter out namespaces that are rarely used in directory names" do
50
+ subject.namespace_dirs_of('ruby-foo').should == ['foo']
51
+ end
52
+
53
+ it "should guess the namespace directory from a project name" do
54
+ subject.namespace_path_of('foo-bar').should == 'foo/bar'
55
+ end
56
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  gem 'rspec', '~> 2.4'
2
2
  require 'rspec'
3
+ require 'helpers/matchers'
3
4
 
4
- gem 'ore-core', '~> 0.1.0'
5
5
  require 'ore/config'
6
6
  Ore::Config.disable!
7
7
 
metadata CHANGED
@@ -1,101 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ore
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
4
5
  prerelease:
5
- version: 0.8.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Postmodern
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-11 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: ore-core
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-04-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 0.1.4
18
+ requirements:
24
19
  - - ~>
25
- - !ruby/object:Gem::Version
26
- version: "0.1"
20
+ - !ruby/object:Gem::Version
21
+ version: 0.14.3
27
22
  type: :runtime
28
- version_requirements: *id001
29
- - !ruby/object:Gem::Dependency
30
- name: env
31
23
  prerelease: false
32
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
33
25
  none: false
34
- requirements:
26
+ requirements:
35
27
  - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 0.1.2
38
- type: :runtime
39
- version_requirements: *id002
40
- - !ruby/object:Gem::Dependency
41
- name: thor
42
- prerelease: false
43
- requirement: &id003 !ruby/object:Gem::Requirement
28
+ - !ruby/object:Gem::Version
29
+ version: 0.14.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: rubygems-tasks
32
+ requirement: !ruby/object:Gem::Requirement
44
33
  none: false
45
- requirements:
34
+ requirements:
46
35
  - - ~>
47
- - !ruby/object:Gem::Version
48
- version: 0.14.3
49
- type: :runtime
50
- version_requirements: *id003
51
- - !ruby/object:Gem::Dependency
52
- name: ore-tasks
36
+ - !ruby/object:Gem::Version
37
+ version: '0.2'
38
+ type: :development
53
39
  prerelease: false
54
- requirement: &id004 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
55
41
  none: false
56
- requirements:
42
+ requirements:
57
43
  - - ~>
58
- - !ruby/object:Gem::Version
59
- version: "0.4"
60
- type: :development
61
- version_requirements: *id004
62
- - !ruby/object:Gem::Dependency
44
+ - !ruby/object:Gem::Version
45
+ version: '0.2'
46
+ - !ruby/object:Gem::Dependency
63
47
  name: rspec
64
- prerelease: false
65
- requirement: &id005 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
66
49
  none: false
67
- requirements:
50
+ requirements:
68
51
  - - ~>
69
- - !ruby/object:Gem::Version
70
- version: "2.4"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.4'
71
54
  type: :development
72
- version_requirements: *id005
73
- - !ruby/object:Gem::Dependency
74
- name: yard
75
55
  prerelease: false
76
- requirement: &id006 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.4'
62
+ - !ruby/object:Gem::Dependency
63
+ name: yard
64
+ requirement: !ruby/object:Gem::Requirement
77
65
  none: false
78
- requirements:
66
+ requirements:
79
67
  - - ~>
80
- - !ruby/object:Gem::Version
81
- version: 0.7.0
68
+ - !ruby/object:Gem::Version
69
+ version: '0.7'
82
70
  type: :development
83
- version_requirements: *id006
84
- description: Ore is a flexible Ruby project generator. Unlike other Ruby project generators, Ore provides many builtin templates and allows custom templates to be installed from Git repositories.
85
- email:
86
- - postmodern.mod3@gmail.com
87
- executables:
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.7'
78
+ description: Ore is a flexible Ruby project generator. Unlike other Ruby project generators,
79
+ Ore provides many builtin templates and allows custom templates to be installed
80
+ from Git repositories.
81
+ email: postmodern.mod3@gmail.com
82
+ executables:
88
83
  - mine
89
84
  - ore
90
85
  extensions: []
91
-
92
- extra_rdoc_files:
93
- - README.md
86
+ extra_rdoc_files:
94
87
  - ChangeLog.md
88
+ - GemspecYML.md
95
89
  - LICENSE.txt
96
- files:
90
+ - README.md
91
+ files:
97
92
  - .document
98
93
  - .gemtest
94
+ - .gitignore
99
95
  - .rspec
100
96
  - .yardopts
101
97
  - ChangeLog.md
@@ -105,7 +101,6 @@ files:
105
101
  - Rakefile
106
102
  - bin/mine
107
103
  - bin/ore
108
- - data/ore/templates/base/.gitignore.erb
109
104
  - data/ore/templates/base/ChangeLog.md.erb
110
105
  - data/ore/templates/base/ChangeLog.rdoc.erb
111
106
  - data/ore/templates/base/ChangeLog.tt.erb
@@ -114,38 +109,38 @@ files:
114
109
  - data/ore/templates/base/README.rdoc.erb
115
110
  - data/ore/templates/base/README.tt.erb
116
111
  - data/ore/templates/base/Rakefile.erb
117
- - data/ore/templates/base/[name].gemspec.erb
118
- - data/ore/templates/base/_gemfile_development.erb
119
- - data/ore/templates/base/gemspec.yml.erb
120
112
  - data/ore/templates/base/lib/[namespace_path].rb.erb
121
113
  - data/ore/templates/base/lib/[namespace_path]/version.rb.erb
122
114
  - data/ore/templates/base/template.yml
123
115
  - data/ore/templates/bin/bin/[name].erb
124
116
  - data/ore/templates/bundler/Gemfile.erb
125
- - data/ore/templates/bundler/_development_dependencies.erb
126
- - data/ore/templates/bundler/_gitignore.erb
127
- - data/ore/templates/bundler/_tasks.erb
128
117
  - data/ore/templates/bundler/template.yml
118
+ - data/ore/templates/bundler_tasks/_tasks.erb
119
+ - data/ore/templates/bundler_tasks/template.yml
120
+ - data/ore/templates/gem_package_task/_tasks.erb
121
+ - data/ore/templates/gem_package_task/template.yml
129
122
  - data/ore/templates/gem_test/.gemtest
130
- - data/ore/templates/jeweler_tasks/_development_dependencies.erb
131
- - data/ore/templates/jeweler_tasks/_gemfile_development.erb
123
+ - data/ore/templates/gemspec/[name].gemspec.erb
124
+ - data/ore/templates/gemspec/template.yml
125
+ - data/ore/templates/gemspec_yml/[name].gemspec.erb
126
+ - data/ore/templates/gemspec_yml/gemspec.yml.erb
127
+ - data/ore/templates/gemspec_yml/template.yml
128
+ - data/ore/templates/git/.gitignore.erb
129
+ - data/ore/templates/git/template.yml
130
+ - data/ore/templates/hg/.hgignore.erb
131
+ - data/ore/templates/hg/template.yml
132
132
  - data/ore/templates/jeweler_tasks/_tasks.erb
133
133
  - data/ore/templates/jeweler_tasks/template.yml
134
- - data/ore/templates/ore_tasks/_development_dependencies.erb
135
- - data/ore/templates/ore_tasks/_gemfile_development.erb
136
- - data/ore/templates/ore_tasks/_tasks.erb
137
- - data/ore/templates/ore_tasks/template.yml
138
134
  - data/ore/templates/rdoc/.document
139
- - data/ore/templates/rdoc/_gitignore.erb
140
135
  - data/ore/templates/rdoc/_tasks.erb
141
136
  - data/ore/templates/rdoc/template.yml
142
137
  - data/ore/templates/rspec/.rspec
143
- - data/ore/templates/rspec/_development_dependencies.erb
144
- - data/ore/templates/rspec/_gemfile_development.erb
145
138
  - data/ore/templates/rspec/_tasks.erb
146
139
  - data/ore/templates/rspec/spec/[namespace_dir]_spec.rb.erb
147
140
  - data/ore/templates/rspec/spec/spec_helper.rb.erb
148
141
  - data/ore/templates/rspec/template.yml
142
+ - data/ore/templates/rubygems_tasks/_tasks.erb
143
+ - data/ore/templates/rubygems_tasks/template.yml
149
144
  - data/ore/templates/rvmrc/.rvmrc.erb
150
145
  - data/ore/templates/test_unit/_tasks.erb
151
146
  - data/ore/templates/test_unit/template.yml
@@ -153,66 +148,58 @@ files:
153
148
  - data/ore/templates/test_unit/test/test_[name].rb.erb
154
149
  - data/ore/templates/yard/.document
155
150
  - data/ore/templates/yard/.yardopts.erb
156
- - data/ore/templates/yard/_development_dependencies.erb
157
151
  - data/ore/templates/yard/_gemfile_development.erb
158
152
  - data/ore/templates/yard/_tasks.erb
159
153
  - data/ore/templates/yard/template.yml
160
154
  - gemspec.yml
161
155
  - lib/ore.rb
156
+ - lib/ore/actions.rb
162
157
  - lib/ore/cli.rb
163
158
  - lib/ore/config.rb
164
159
  - lib/ore/generator.rb
160
+ - lib/ore/naming.rb
161
+ - lib/ore/options.rb
165
162
  - lib/ore/template.rb
166
163
  - lib/ore/template/directory.rb
167
164
  - lib/ore/template/exceptions.rb
168
165
  - lib/ore/template/exceptions/invalid_template.rb
169
166
  - lib/ore/template/helpers.rb
170
167
  - lib/ore/template/interpolations.rb
168
+ - lib/ore/template/template.rb
171
169
  - ore.gemspec
170
+ - spec/gemspec_examples.rb
172
171
  - spec/generator_spec.rb
173
172
  - spec/helpers/generator.rb
173
+ - spec/helpers/matchers.rb
174
+ - spec/naming_spec.rb
174
175
  - spec/spec_helper.rb
175
- homepage: http://github.com/ruby-ore/ore
176
- licenses:
176
+ homepage: https://github.com/ruby-ore/ore#readme
177
+ licenses:
177
178
  - MIT
178
- post_install_message: |
179
- **************************************************************************
180
- Generate a new Ruby library:
181
-
182
- $ mine my_library --rspec --yard
183
-
184
- Build the library:
185
-
186
- $ rake build
187
-
188
- Release the library to rubygems.org:
189
-
190
- $ rake release
191
-
192
- **************************************************************************
193
-
179
+ post_install_message: ! "**************************************************************************\nGenerate
180
+ a new Ruby library:\n\n $ mine my_library --rspec --yard\n\nBuild the library:\n\n
181
+ \ $ rake build\n\nRelease the library to rubygems.org:\n\n $ rake release\n\n**************************************************************************\n"
194
182
  rdoc_options: []
195
-
196
- require_paths:
183
+ require_paths:
197
184
  - lib
198
- required_ruby_version: !ruby/object:Gem::Requirement
185
+ required_ruby_version: !ruby/object:Gem::Requirement
199
186
  none: false
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- version: "0"
204
- required_rubygems_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
192
  none: false
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: "0"
193
+ requirements:
194
+ - - ! '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
210
197
  requirements: []
211
-
212
- rubyforge_project: ore
213
- rubygems_version: 1.8.5
198
+ rubyforge_project:
199
+ rubygems_version: 1.8.23
214
200
  signing_key:
215
201
  specification_version: 3
216
- summary: Mine raw RubyGems from YAML
217
- test_files:
202
+ summary: Mine beautiful RubyGems from Ore
203
+ test_files:
218
204
  - spec/generator_spec.rb
205
+ - spec/naming_spec.rb
@@ -1,3 +0,0 @@
1
- doc/
2
- pkg/
3
- <%= includes :gitignore -%>
@@ -1,3 +0,0 @@
1
- <%- unless ore_tasks? -%>
2
- gem 'ore-core', '<%= @ore_core_dependency %>'
3
- <%- end -%>
@@ -1,30 +0,0 @@
1
- name: <%= @name %>
2
- summary: <%= yaml_escape @summary %>
3
- description: <%= yaml_escape @description %>
4
- <%- if @license -%>
5
- license: <%= @license %>
6
- <%- end -%>
7
- <%- if @authors.length > 1 -%>
8
- authors:
9
- <%- @authors.each do |name| -%>
10
- - <%= name %>
11
- <%- end -%>
12
- <%- else -%>
13
- authors: <%= @authors.first %>
14
- <%- end -%>
15
- <%- if @email -%>
16
- email: <%= @email %>
17
- <%- end -%>
18
- homepage: <%= @homepage %>
19
- <%= includes :gemspec, '' -%>
20
-
21
- <%- includes(:dependencies,'') do |dependencies| -%>
22
- dependencies:
23
- <%= dependencies %>
24
-
25
- <%- end -%>
26
- development_dependencies:
27
- <%- unless (bundler? || ore_tasks?) -%>
28
- ore-core: <%= @ore_core_dependency %>
29
- <%- end -%>
30
- <%= includes :development_dependencies, '' -%>