ore 0.8.1 → 0.9.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.
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, '' -%>