ore 0.2.2 → 0.2.3

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.
@@ -1,3 +1,16 @@
1
+ ### 0.2.3 / 2010-11-01
2
+
3
+ * Fixed path interpolation on Windows:
4
+ * Windows does not allow the `:` character in paths, so path interpolation
5
+ keywords are now wrapped in `[` and `]` characters.
6
+
7
+ interpolate("[name].gemspec")
8
+ # => "my-project.gemspec"
9
+
10
+ * Do not include `ore-tasks` as a developmnet dependency in generated
11
+ projects that also use Bundler.
12
+ * Added more specs to {Ore::Generator} and the builtin templates.
13
+
1
14
  ### 0.2.2 / 2010-10-30
2
15
 
3
16
  * Added {Ore::Project#root}.
@@ -1 +1,3 @@
1
+ <%- unless bundler? -%>
1
2
  ore-tasks: <%= @ore_tasks_dependency %>
3
+ <%- end -%>
@@ -1,5 +1,5 @@
1
1
  name: ore
2
- version: 0.2.2
2
+ version: 0.2.3
3
3
  summary: Mine raw RubyGems from YAML
4
4
  description:
5
5
  Ore is a simple RubyGem building solution. Ore handles the
@@ -4,10 +4,10 @@ module Ore
4
4
  # Handles the expansion of paths and substitution of path keywords.
5
5
  # The following keywords are supported:
6
6
  #
7
- # * `:name:` - The name of the project.
8
- # * `:project_dir:` - The directory base-name derived from the project
7
+ # * `[name]` - The name of the project.
8
+ # * `[project_dir]` - The directory base-name derived from the project
9
9
  # name.
10
- # * `:namespace_dir:` - The full directory path derived from the
10
+ # * `[namespace_dir]` - The full directory path derived from the
11
11
  # project name.
12
12
  #
13
13
  module Interpolations
@@ -31,18 +31,18 @@ module Ore
31
31
  # The expanded path.
32
32
  #
33
33
  # @example Assuming `@project_dir` contains `my_project`.
34
- # interpolate "lib/:project_dir:.rb"
34
+ # interpolate("lib/[project_dir].rb")
35
35
  # # => "lib/my_project.rb"
36
36
  #
37
37
  # @example Assuming `@namespace_dir` contains `my/project`.
38
- # interpolate "spec/:namespace_dir:_spec.rb"
38
+ # interpolate("spec/[namespace_dir]_spec.rb")
39
39
  # # => "spec/my/project_spec.rb"
40
40
  #
41
41
  def interpolate(path)
42
42
  dirs = path.split(File::SEPARATOR)
43
43
 
44
44
  dirs.each do |dir|
45
- dir.gsub!(/(:[a-z_]+:)/) do |capture|
45
+ dir.gsub!(/(\[[a-z_]+\])/) do |capture|
46
46
  keyword = capture[1..-2]
47
47
 
48
48
  if @@keywords.include?(keyword)
@@ -0,0 +1,287 @@
1
+ require 'spec_helper'
2
+ require 'helpers/generator'
3
+ require 'ore/generator'
4
+
5
+ describe Generator do
6
+ include Helpers::Generator
7
+
8
+ context "default" do
9
+ let(:name) { 'my-project' }
10
+
11
+ before(:all) do
12
+ generate!(name)
13
+ end
14
+
15
+ it "should create the project root directory" do
16
+ @path.should be_directory
17
+ end
18
+
19
+ it "should create the lib/ directory" do
20
+ @path.join('lib').should be_directory
21
+ end
22
+
23
+ it "should create a file to load the project within lib/" do
24
+ @path.join('lib','my','project.rb').should be_file
25
+ end
26
+
27
+ it "should create a namespace directory within lib/" do
28
+ @path.join('lib','my','project').should be_directory
29
+ end
30
+
31
+ it "should create a version.rb file within the namespace directory" do
32
+ @path.join('lib','my','project','version.rb').should be_file
33
+ end
34
+
35
+ it "should not create the bin/ directory by default" do
36
+ @path.join('bin').should_not be_directory
37
+ end
38
+
39
+ it "should create a test/ directory by default" do
40
+ @path.join('test').should_not be_directory
41
+ end
42
+
43
+ it "should create a gemspec.yml file" do
44
+ @path.join('gemspec.yml').should be_file
45
+ end
46
+
47
+ describe "gemspec.yml" do
48
+ subject { @gemspec }
49
+
50
+ it "should have a name" do
51
+ subject['name'].should == 'my-project'
52
+ end
53
+
54
+ it "should not contain a version by default" do
55
+ subject.should_not have_key('version')
56
+ end
57
+
58
+ it "should a dummy summary" do
59
+ subject['summary'].should_not be_empty
60
+ end
61
+
62
+ it "should a description summary" do
63
+ subject['description'].should_not be_empty
64
+ end
65
+
66
+ it "should have a license" do
67
+ subject['license'].should == 'MIT'
68
+ end
69
+
70
+ it "should have authors" do
71
+ subject['authors'].should_not be_empty
72
+ end
73
+
74
+ it "should have a dummy homepage" do
75
+ subject['homepage'].should_not be_empty
76
+ end
77
+
78
+ it "should have 'ore' as a development dependency" do
79
+ subject['development_dependencies'].should have_key('ore')
80
+ end
81
+ end
82
+
83
+ it "should add a *.gemspec file" do
84
+ @path.join('my-project.gemspec').should be_file
85
+ end
86
+
87
+ it "should add a .document file" do
88
+ @path.join('.document').should be_file
89
+ end
90
+
91
+ it "should add a Rakefile" do
92
+ @path.join('Rakefile').should be_file
93
+ end
94
+
95
+ it "should add a README.rdoc file" do
96
+ @path.join('README.rdoc').should be_file
97
+ end
98
+
99
+ it "should add a ChangeLog.rdoc file" do
100
+ @path.join('ChangeLog.rdoc').should be_file
101
+ end
102
+
103
+ it "should add a LICENSE.txt file" do
104
+ @path.join('LICENSE.txt').should be_file
105
+ end
106
+ end
107
+
108
+ context "bundler" do
109
+ let(:name) { 'bundled_project' }
110
+
111
+ before(:all) do
112
+ generate!(name, :bundler => true)
113
+ end
114
+
115
+ it "should add a Gemfile" do
116
+ @path.join('Gemfile').should be_file
117
+ end
118
+
119
+ it "should add 'bundler' as a development dependency" do
120
+ @gemspec['development_dependencies'].should have_key('bundler')
121
+ end
122
+ end
123
+
124
+ context "yard" do
125
+ let(:name) { 'yard-project' }
126
+
127
+ before(:all) do
128
+ generate!(name, :yard => true)
129
+ end
130
+
131
+ it "should add a .yardopts file" do
132
+ @path.join('.yardopts').should be_file
133
+ end
134
+
135
+ it "should set 'has_yard' to 'true' in the gemspec.yml file" do
136
+ @gemspec['has_yard'].should == true
137
+ end
138
+ end
139
+
140
+ context "yard with markdown" do
141
+ let(:name) { 'yard_markdown-project' }
142
+
143
+ before(:all) do
144
+ generate!(name, :yard => true, :markdown => true)
145
+ end
146
+
147
+ it "should add a README.md file" do
148
+ @path.join('README.md').should be_file
149
+ end
150
+
151
+ it "should add a ChangeLog.md file" do
152
+ @path.join('ChangeLog.md').should be_file
153
+ end
154
+
155
+ it "should set --markup to markdown in .yardopts" do
156
+ yard_opts.should include('--markup markdown')
157
+ end
158
+ end
159
+
160
+ context "yard with textile" do
161
+ let(:name) { 'yard_textile-project' }
162
+
163
+ before(:all) do
164
+ generate!(name, :yard => true, :textile => true)
165
+ end
166
+
167
+ it "should add a README.tt file" do
168
+ @path.join('README.tt').should be_file
169
+ end
170
+
171
+ it "should add a ChangeLog.tt file" do
172
+ @path.join('ChangeLog.tt').should be_file
173
+ end
174
+
175
+ it "should set --markup to textile in .yardopts" do
176
+ yard_opts.should include('--markup textile')
177
+ end
178
+ end
179
+
180
+ context "yard with bundler" do
181
+ let(:name) { 'bundled_yard_project' }
182
+
183
+ before(:all) do
184
+ generate!(name, :bundler => true, :yard => true)
185
+ end
186
+
187
+ it "should still add 'yard' as a development dependency" do
188
+ @gemspec['development_dependencies'].should have_key('yard')
189
+ end
190
+ end
191
+
192
+ context "rspec" do
193
+ let(:name) { 'rspec_project' }
194
+
195
+ before(:all) do
196
+ generate!(name, :rspec => true)
197
+ end
198
+
199
+ it "should not create the test/ directory" do
200
+ @path.join('test').should_not be_directory
201
+ end
202
+
203
+ it "should create the spec/ directory" do
204
+ @path.join('spec').should be_directory
205
+ end
206
+
207
+ it "should add a spec_helper.rb file" do
208
+ @path.join('spec','spec_helper.rb').should be_file
209
+ end
210
+
211
+ it "should add a single *_spec.rb file" do
212
+ @path.join('spec','rspec_project_spec.rb').should be_file
213
+ end
214
+
215
+ it "should add a .rspec file" do
216
+ @path.join('.rspec').should be_file
217
+ end
218
+
219
+ it "should add 'rspec' as a development dependency" do
220
+ @gemspec['development_dependencies'].should have_key('rspec')
221
+ end
222
+ end
223
+
224
+ context "rspec with bundler" do
225
+ let(:name) { 'bundled_rspec_project' }
226
+
227
+ before(:all) do
228
+ generate!(name, :bundler => true, :rspec => true)
229
+ end
230
+
231
+ it "should not add 'rspec' as a development dependency" do
232
+ @gemspec['development_dependencies'].should_not have_key('rspec')
233
+ end
234
+ end
235
+
236
+ context "jeweler tasks" do
237
+ let(:name) { 'jewelery_project' }
238
+
239
+ before(:all) do
240
+ generate!(name, :jeweler_tasks => true)
241
+ end
242
+
243
+ it "should add 'jeweler' as a development dependency" do
244
+ @gemspec['development_dependencies'].should have_key('jeweler')
245
+ end
246
+ end
247
+
248
+ context "jeweler tasks with bundler" do
249
+ let(:name) { 'bundled_jewelery_project' }
250
+
251
+ before(:all) do
252
+ generate!(name, :bundler => true, :jeweler_tasks => true)
253
+ end
254
+
255
+ it "should not add 'jeweler' as a development dependency" do
256
+ @gemspec['development_dependencies'].should_not have_key('jeweler')
257
+ end
258
+ end
259
+
260
+ context "ore tasks" do
261
+ let(:name) { 'ore_project' }
262
+
263
+ before(:all) do
264
+ generate!(name, :ore_tasks => true)
265
+ end
266
+
267
+ it "should add 'ore-tasks' as a development dependency" do
268
+ @gemspec['development_dependencies'].should have_key('ore-tasks')
269
+ end
270
+ end
271
+
272
+ context "ore tasks with bundler" do
273
+ let(:name) { 'bundled_ore_project' }
274
+
275
+ before(:all) do
276
+ generate!(name, :bundler => true, :ore_tasks => true)
277
+ end
278
+
279
+ it "should not add 'ore-tasks' as a development dependency" do
280
+ @gemspec['development_dependencies'].should_not have_key('ore-tasks')
281
+ end
282
+ end
283
+
284
+ after(:all) do
285
+ cleanup!
286
+ end
287
+ end
@@ -0,0 +1,34 @@
1
+ require 'tempfile'
2
+ require 'pathname'
3
+ require 'yaml'
4
+ require 'fileutils'
5
+
6
+ module Helpers
7
+ module Generator
8
+ ROOT = File.join(Dir.tmpdir,'ore')
9
+
10
+ def generate!(path,options={})
11
+ path = File.join(ROOT,path)
12
+
13
+ Ore::Generator.new(
14
+ [path],
15
+ options.merge(:quiet => true)
16
+ ).invoke_all
17
+
18
+ @path = Pathname.new(path)
19
+ @gemspec = YAML.load_file(@path.join('gemspec.yml'))
20
+ end
21
+
22
+ def rspec_opts
23
+ @path.join('.rspec').read
24
+ end
25
+
26
+ def yard_opts
27
+ @path.join('.yardopts').read
28
+ end
29
+
30
+ def cleanup!
31
+ FileUtils.rm_r(ROOT)
32
+ end
33
+ end
34
+ end
@@ -5,6 +5,6 @@ begin
5
5
  # custom logic here
6
6
  end
7
7
  rescue NameError
8
- STDERR.puts "The 'my-project.gemspec' file requires Ore."
8
+ STDERR.puts "The 'dm-is-plugin.gemspec' file requires Ore."
9
9
  STDERR.puts "Run `gem install ore` to install Ore."
10
10
  end
@@ -1,4 +1,4 @@
1
- name: dm-plugin
1
+ name: dm-is-plugin
2
2
  summary: DataMapper Plugin
3
3
  description: A plugin for DataMapper
4
4
  authors: Dan Kubb
@@ -0,0 +1,4 @@
1
+ require 'dm-core'
2
+ require 'dm-is-plugin/is/plugin'
3
+
4
+ DataMapper::Model.append_extensions DataMapper::Is::Plugin
@@ -0,0 +1,6 @@
1
+ module DataMapper
2
+ module Is
3
+ module Plugin
4
+ end
5
+ end
6
+ end
@@ -6,17 +6,17 @@ describe "DataMapper Plugin project" do
6
6
  include Helpers::Projects
7
7
 
8
8
  before(:all) do
9
- @project = project('dm-plugin')
9
+ @project = project('dm-is-plugin')
10
10
  end
11
11
 
12
12
  it_should_behave_like 'an Ore Project'
13
13
 
14
14
  it "should correctly guess the namespace" do
15
- @project.namespace.should == 'DataMapper::Plugin'
15
+ @project.namespace.should == 'DataMapper::Is::Plugin'
16
16
  end
17
17
 
18
18
  it "should have a namespace directory" do
19
- @project.namespace_dir.should == 'dm-plugin'
19
+ @project.namespace_dir.should == 'dm-is-plugin'
20
20
  end
21
21
 
22
22
  it "should use Bundler" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 2
9
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Postmodern
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-30 00:00:00 -07:00
17
+ date: 2010-11-01 00:00:00 -07:00
18
18
  default_executable: ore
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -87,7 +87,6 @@ files:
87
87
  - bin/ore
88
88
  - data/ore/templates/base/.document
89
89
  - data/ore/templates/base/.gitignore.erb
90
- - data/ore/templates/base/:name:.gemspec.erb
91
90
  - data/ore/templates/base/ChangeLog.md.erb
92
91
  - data/ore/templates/base/ChangeLog.rdoc.erb
93
92
  - data/ore/templates/base/ChangeLog.tt.erb
@@ -96,10 +95,11 @@ files:
96
95
  - data/ore/templates/base/README.rdoc.erb
97
96
  - data/ore/templates/base/README.tt.erb
98
97
  - data/ore/templates/base/Rakefile.erb
98
+ - data/ore/templates/base/[name].gemspec.erb
99
99
  - data/ore/templates/base/_gemfile.erb
100
100
  - data/ore/templates/base/gemspec.yml.erb
101
- - data/ore/templates/base/lib/:namespace_dir:.rb.erb
102
- - data/ore/templates/base/lib/:namespace_dir:/version.rb.erb
101
+ - data/ore/templates/base/lib/[namespace_dir].rb.erb
102
+ - data/ore/templates/base/lib/[namespace_dir]/version.rb.erb
103
103
  - data/ore/templates/base/template.yml
104
104
  - data/ore/templates/bundler/Gemfile.erb
105
105
  - data/ore/templates/bundler/_dependencies.erb
@@ -117,11 +117,11 @@ files:
117
117
  - data/ore/templates/rspec/_dependencies.erb
118
118
  - data/ore/templates/rspec/_gemfile.erb
119
119
  - data/ore/templates/rspec/_tasks.erb
120
- - data/ore/templates/rspec/spec/:namespace_dir:_spec.rb.erb
120
+ - data/ore/templates/rspec/spec/[namespace_dir]_spec.rb.erb
121
121
  - data/ore/templates/rspec/spec/spec_helper.rb.erb
122
122
  - data/ore/templates/rspec/template.yml
123
123
  - data/ore/templates/test_unit/test/helper.rb.erb
124
- - data/ore/templates/test_unit/test/test_:name:.rb.erb
124
+ - data/ore/templates/test_unit/test/test_[name].rb.erb
125
125
  - data/ore/templates/yard/.yardopts.erb
126
126
  - data/ore/templates/yard/_dependencies.erb
127
127
  - data/ore/templates/yard/_gemfile.erb
@@ -162,16 +162,19 @@ files:
162
162
  - ore.gemspec
163
163
  - spec/dependency_spec.rb
164
164
  - spec/document_file_spec.rb
165
+ - spec/generator_spec.rb
165
166
  - spec/helpers/files.rb
166
167
  - spec/helpers/files/.document
167
168
  - spec/helpers/files/VERSION
168
169
  - spec/helpers/files/VERSION.yml
170
+ - spec/helpers/generator.rb
169
171
  - spec/helpers/projects.rb
170
- - spec/helpers/projects/dm-plugin/Gemfile
171
- - spec/helpers/projects/dm-plugin/VERSION
172
- - spec/helpers/projects/dm-plugin/dm-plugin.gemspec
173
- - spec/helpers/projects/dm-plugin/gemspec.yml
174
- - spec/helpers/projects/dm-plugin/lib/dm-plugin.rb
172
+ - spec/helpers/projects/dm-is-plugin/Gemfile
173
+ - spec/helpers/projects/dm-is-plugin/VERSION
174
+ - spec/helpers/projects/dm-is-plugin/dm-is-plugin.gemspec
175
+ - spec/helpers/projects/dm-is-plugin/gemspec.yml
176
+ - spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin.rb
177
+ - spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin/is/plugin.rb
175
178
  - spec/helpers/projects/explicit/gemspec.yml
176
179
  - spec/helpers/projects/explicit/lib/explicit/version.rb
177
180
  - spec/helpers/projects/ffi-binding/gemspec.yml
@@ -230,6 +233,7 @@ test_files:
230
233
  - spec/dependency_spec.rb
231
234
  - spec/naming_spec.rb
232
235
  - spec/document_file_spec.rb
236
+ - spec/generator_spec.rb
233
237
  - spec/versions/version_spec.rb
234
238
  - spec/versions/version_file_spec.rb
235
239
  - spec/projects/jeweler_project_spec.rb
@@ -1 +0,0 @@
1
- require 'dm-core'