ore 0.2.3 → 0.3.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/.document +0 -1
- data/ChangeLog.md +28 -18
- data/README.md +8 -6
- data/Rakefile +10 -0
- data/data/ore/templates/base/[name].gemspec.erb +1 -1
- data/data/ore/templates/base/_gemfile.erb +1 -1
- data/data/ore/templates/base/gemspec.yml.erb +2 -2
- data/data/ore/templates/base/template.yml +1 -1
- data/data/ore/templates/ore_tasks/template.yml +1 -1
- data/gemspec.yml +4 -2
- data/lib/ore/generator.rb +1 -1
- data/lib/ore/template/helpers.rb +24 -0
- data/ore.gemspec +9 -5
- data/spec/generator_spec.rb +9 -1
- data/spec/spec_helper.rb +2 -0
- metadata +43 -80
- data/GemspecYML.md +0 -272
- data/lib/ore.rb +0 -3
- data/lib/ore/checks.rb +0 -88
- data/lib/ore/defaults.rb +0 -141
- data/lib/ore/dependency.rb +0 -65
- data/lib/ore/document_file.rb +0 -118
- data/lib/ore/exceptions.rb +0 -3
- data/lib/ore/exceptions/exception.rb +0 -4
- data/lib/ore/exceptions/invalid_metadata.rb +0 -6
- data/lib/ore/exceptions/project_not_found.rb +0 -6
- data/lib/ore/naming.rb +0 -113
- data/lib/ore/paths.rb +0 -146
- data/lib/ore/project.rb +0 -591
- data/lib/ore/settings.rb +0 -262
- data/lib/ore/specification.rb +0 -29
- data/lib/ore/versions.rb +0 -3
- data/lib/ore/versions/exceptions.rb +0 -1
- data/lib/ore/versions/exceptions/invalid_version.rb +0 -8
- data/lib/ore/versions/version.rb +0 -75
- data/lib/ore/versions/version_constant.rb +0 -126
- data/lib/ore/versions/version_file.rb +0 -66
- data/lib/rubygems_plugin.rb +0 -40
- data/spec/dependency_spec.rb +0 -36
- data/spec/document_file_spec.rb +0 -29
- data/spec/helpers/files.rb +0 -7
- data/spec/helpers/files/.document +0 -5
- data/spec/helpers/files/VERSION +0 -1
- data/spec/helpers/files/VERSION.yml +0 -5
- data/spec/helpers/projects.rb +0 -13
- data/spec/helpers/projects/dm-is-plugin/Gemfile +0 -3
- data/spec/helpers/projects/dm-is-plugin/VERSION +0 -1
- data/spec/helpers/projects/dm-is-plugin/dm-is-plugin.gemspec +0 -10
- data/spec/helpers/projects/dm-is-plugin/gemspec.yml +0 -7
- data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin.rb +0 -4
- data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin/is/plugin.rb +0 -6
- data/spec/helpers/projects/explicit/gemspec.yml +0 -10
- data/spec/helpers/projects/explicit/lib/explicit/version.rb +0 -15
- data/spec/helpers/projects/ffi-binding/gemspec.yml +0 -9
- data/spec/helpers/projects/ffi-binding/lib/ffi/binding/version.rb +0 -5
- data/spec/helpers/projects/jewelery/VERSION +0 -1
- data/spec/helpers/projects/jewelery/bin/jewelery +0 -3
- data/spec/helpers/projects/jewelery/gemspec.yml +0 -4
- data/spec/helpers/projects/jewelery/jewelery.gemspec +0 -10
- data/spec/helpers/projects/jewelery/lib/jewelery.rb +0 -4
- data/spec/helpers/projects/jewelery/lib/jewelery/rubies.rb +0 -4
- data/spec/helpers/projects/minimal/gemspec.yml +0 -4
- data/spec/helpers/projects/minimal/lib/minimal.rb +0 -2
- data/spec/naming_spec.rb +0 -56
- data/spec/projects/dm_plugin_project_spec.rb +0 -29
- data/spec/projects/explicit_project_spec.rb +0 -33
- data/spec/projects/ffi_binding_project_spec.rb +0 -25
- data/spec/projects/jeweler_project_spec.rb +0 -17
- data/spec/projects/minimal_project_spec.rb +0 -17
- data/spec/projects/project_examples.rb +0 -34
- data/spec/versions/version_file_spec.rb +0 -28
- data/spec/versions/version_spec.rb +0 -53
data/GemspecYML.md
DELETED
@@ -1,272 +0,0 @@
|
|
1
|
-
# gemspec.yml
|
2
|
-
|
3
|
-
Ore uses the `gemspec.yml` file to store all static data about a project.
|
4
|
-
The `gemspec.yml` is a simple YAML file, which contains the same data
|
5
|
-
that a normal Ruby `.gemspec` file would. Below is the complete listing
|
6
|
-
of valid data that can be listed in a `gemspec.yml` file.
|
7
|
-
|
8
|
-
## name
|
9
|
-
|
10
|
-
The name of the project can be listed like so:
|
11
|
-
|
12
|
-
name: foo
|
13
|
-
|
14
|
-
If the name is not listed, Ore will use the base-name of the project
|
15
|
-
directory.
|
16
|
-
|
17
|
-
## version
|
18
|
-
|
19
|
-
The version of the project can be listed like so:
|
20
|
-
|
21
|
-
version: 1.2.3
|
22
|
-
|
23
|
-
The `version` may also be listed as a Hash:
|
24
|
-
|
25
|
-
version:
|
26
|
-
major: 1
|
27
|
-
minor: 2
|
28
|
-
patch: 3
|
29
|
-
build: pre
|
30
|
-
|
31
|
-
If the version is not listed, Ore will first search for a `VERSION` or
|
32
|
-
`VERSION.yml` file in the root of the project. If Ore cannot find any
|
33
|
-
version files, it will then search within the `lib/` directory for a
|
34
|
-
`version.rb`. Ore can load both Ruby `VERSION` constants or `Version`
|
35
|
-
modules that contain `MAJOR`, `MINOR`, `PATCH` and `BUILD` constants.
|
36
|
-
|
37
|
-
## summary
|
38
|
-
|
39
|
-
The summary of the project can be listed like so:
|
40
|
-
|
41
|
-
summary: My awesome project
|
42
|
-
|
43
|
-
## description
|
44
|
-
|
45
|
-
The description of the project can be listed in a variety of ways:
|
46
|
-
|
47
|
-
* Single line:
|
48
|
-
|
49
|
-
description: My project, which provides various functionality.
|
50
|
-
|
51
|
-
* Text block:
|
52
|
-
|
53
|
-
description:
|
54
|
-
My project, which provides the developer with various attributes
|
55
|
-
and behaviors.
|
56
|
-
|
57
|
-
If the description is not listed, it will default to the `summary`.
|
58
|
-
|
59
|
-
## license
|
60
|
-
|
61
|
-
The license of the project can be listed like so:
|
62
|
-
|
63
|
-
license: MIT
|
64
|
-
|
65
|
-
Multiple licenses can also be listed:
|
66
|
-
|
67
|
-
license:
|
68
|
-
- LGPL-2.1
|
69
|
-
- GPL-2
|
70
|
-
|
71
|
-
## authors
|
72
|
-
|
73
|
-
The authors of the project can be listed like so:
|
74
|
-
|
75
|
-
author: Alice
|
76
|
-
|
77
|
-
If a project has more than one author, each author can be listed:
|
78
|
-
|
79
|
-
author:
|
80
|
-
- Alice
|
81
|
-
- Eve
|
82
|
-
- Bob
|
83
|
-
|
84
|
-
## email
|
85
|
-
|
86
|
-
The primary email contact for the project can be listed like so:
|
87
|
-
|
88
|
-
email: alice@example.com
|
89
|
-
|
90
|
-
## date
|
91
|
-
|
92
|
-
The publish date of the current version can be listed like so:
|
93
|
-
|
94
|
-
date: 2010-10-23
|
95
|
-
|
96
|
-
Ore will use [Date.parse](http://rubydoc.info/docs/ruby-stdlib/1.9.2/Date.parse)
|
97
|
-
to parse the `date` value.
|
98
|
-
|
99
|
-
If the `date` is not listed, Ore will default it to the current date.
|
100
|
-
|
101
|
-
## require_paths
|
102
|
-
|
103
|
-
The require_paths of a project can be listed like so:
|
104
|
-
|
105
|
-
require_paths: lib
|
106
|
-
|
107
|
-
If there are more than one require_path that needs listing:
|
108
|
-
|
109
|
-
require_paths:
|
110
|
-
- ext
|
111
|
-
- lib
|
112
|
-
|
113
|
-
## executables
|
114
|
-
|
115
|
-
The names of the executables provided by the project can be listed like so:
|
116
|
-
|
117
|
-
executables: bin/*
|
118
|
-
|
119
|
-
One can also list the executables individually:
|
120
|
-
|
121
|
-
executables:
|
122
|
-
- util1
|
123
|
-
- util2
|
124
|
-
|
125
|
-
If the `executables` are not listed, Ore will use the names of any
|
126
|
-
executable file within the `bin/` directory.
|
127
|
-
|
128
|
-
## default_executable
|
129
|
-
|
130
|
-
The primary executable of the project can be listed like so:
|
131
|
-
|
132
|
-
default_executable: util1
|
133
|
-
|
134
|
-
If `default_executable` is not listed, Ore will use the first element
|
135
|
-
in `executables`.
|
136
|
-
|
137
|
-
## has_rdoc
|
138
|
-
|
139
|
-
One can specify the project contains [RDoc](http://rdoc.rubyforge.org/)
|
140
|
-
documentation:
|
141
|
-
|
142
|
-
has_rdoc: true
|
143
|
-
|
144
|
-
## has_yard
|
145
|
-
|
146
|
-
If the project contains [YARD](http://yardoc.org/) and not
|
147
|
-
[RDoc](http://rdoc.rubyforge.org/) documentation, one can specify this:
|
148
|
-
|
149
|
-
has_yard: true
|
150
|
-
|
151
|
-
If neither `has_yard` or `has_rdoc` are listed, Ore will set `has_yard`
|
152
|
-
if the `.yardopts` file exists in the root directory of the project.
|
153
|
-
Otherwise, Ore will default `has_rdoc` to true.
|
154
|
-
|
155
|
-
## extra_doc_files
|
156
|
-
|
157
|
-
The extra files that should also be scanned for documentation can be listed
|
158
|
-
like so:
|
159
|
-
|
160
|
-
extra_doc_files:
|
161
|
-
- ChangeLog.md
|
162
|
-
- LICENSE.txt
|
163
|
-
|
164
|
-
If `extra_doc_files` is not listed, Ore will use the extra-files listed in
|
165
|
-
the `.document` file.
|
166
|
-
|
167
|
-
## files
|
168
|
-
|
169
|
-
The files of the project can be listed like so:
|
170
|
-
|
171
|
-
file: lib/**/*.rb
|
172
|
-
|
173
|
-
More than one file pattern can be specification:
|
174
|
-
|
175
|
-
file:
|
176
|
-
- lib/**/*.rb
|
177
|
-
- spec/**/*
|
178
|
-
- data/**/*
|
179
|
-
|
180
|
-
If `files` is not listed, Ore will check if the project is using
|
181
|
-
[Git](http://www.git-scm.org/), can will find all tracked files using:
|
182
|
-
|
183
|
-
git ls-files -z
|
184
|
-
|
185
|
-
If the project is not using Git, Ore will default `files` to every file in
|
186
|
-
the project.
|
187
|
-
|
188
|
-
## test_files
|
189
|
-
|
190
|
-
The files used to test the project can be listed like so:
|
191
|
-
|
192
|
-
test_files: spec/**/*_spec.rb
|
193
|
-
|
194
|
-
More than one test-file pattern can be supplied:
|
195
|
-
|
196
|
-
test_files:
|
197
|
-
- spec/**/*_spec.rb
|
198
|
-
- features/**/*
|
199
|
-
|
200
|
-
If `test_files` is not listed, Ore will default `files` to
|
201
|
-
`test/{**/}test_*.rb` and `spec/{**/}*_spec.rb`.
|
202
|
-
|
203
|
-
## requirements
|
204
|
-
|
205
|
-
The external requirements of the project can be listed like so:
|
206
|
-
|
207
|
-
requirements: libcairo >= 1.8
|
208
|
-
|
209
|
-
Multiple external requirements can also be listed:
|
210
|
-
|
211
|
-
requirements:
|
212
|
-
- libcairo >= 1.8.0
|
213
|
-
- libclutter >= 1.2.0
|
214
|
-
|
215
|
-
## required_ruby_version
|
216
|
-
|
217
|
-
The version of Ruby required by the project can be listed like so:
|
218
|
-
|
219
|
-
required_ruby_version: >= 1.9.1
|
220
|
-
|
221
|
-
## required_rubygems_version
|
222
|
-
|
223
|
-
The version of RubyGems required by the project can be listed like so:
|
224
|
-
|
225
|
-
required_rubygems_version: >= 1.3.7
|
226
|
-
|
227
|
-
If `required_rubygems_version` is not listed and the project uses Bundler,
|
228
|
-
Ore will default `required_rubygems_version` to `>= 1.3.6`.
|
229
|
-
|
230
|
-
## dependencies
|
231
|
-
|
232
|
-
The dependencies of the project can be listed like so:
|
233
|
-
|
234
|
-
dependencies:
|
235
|
-
foo: ~> 0.1.0
|
236
|
-
bar: 1.2.3
|
237
|
-
|
238
|
-
More than one version can be specified for each dependency:
|
239
|
-
|
240
|
-
dependencies:
|
241
|
-
foo: ~> 0.1.0, >= 0.0.7
|
242
|
-
bar: 1.2.3, 1.3.1
|
243
|
-
|
244
|
-
## runtime_dependencies
|
245
|
-
|
246
|
-
The purely runtime-dependencies for a project can be specified like so:
|
247
|
-
|
248
|
-
runtime_dependencies:
|
249
|
-
foo: ~> 0.1.0
|
250
|
-
bar: 1.2.3
|
251
|
-
|
252
|
-
More than one version can be specified for each dependency:
|
253
|
-
|
254
|
-
dependencies:
|
255
|
-
foo: ~> 0.1.0, >= 0.0.7
|
256
|
-
bar: 1.2.3, 1.3.1
|
257
|
-
|
258
|
-
## development_dependencies:
|
259
|
-
|
260
|
-
The purely developmental-dependencies for a project can be specified
|
261
|
-
like so:
|
262
|
-
|
263
|
-
development_dependencies:
|
264
|
-
foo: ~> 0.1.0
|
265
|
-
bar: 1.2.3
|
266
|
-
|
267
|
-
More than one version can be specified for each dependency:
|
268
|
-
|
269
|
-
dependencies:
|
270
|
-
foo: ~> 0.1.0, >= 0.0.7
|
271
|
-
bar: 1.2.3, 1.3.1
|
272
|
-
|
data/lib/ore.rb
DELETED
data/lib/ore/checks.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
module Ore
|
2
|
-
#
|
3
|
-
# A mixin for {Project} which provides methods for checking files.
|
4
|
-
#
|
5
|
-
module Checks
|
6
|
-
protected
|
7
|
-
|
8
|
-
#
|
9
|
-
# Checks if the path is readable.
|
10
|
-
#
|
11
|
-
# @yield [path]
|
12
|
-
# The block will be passed the path, if it is readable.
|
13
|
-
# Otherwise a warning will be printed.
|
14
|
-
#
|
15
|
-
# @yieldparam [String] path
|
16
|
-
# A readable path.
|
17
|
-
#
|
18
|
-
def check_readable(path)
|
19
|
-
if File.readable?(path)
|
20
|
-
yield path
|
21
|
-
else
|
22
|
-
warn "#{path} is not readable!"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
#
|
27
|
-
# Checks if the path is a readable directory.
|
28
|
-
#
|
29
|
-
# @yield [path]
|
30
|
-
# The block will be passed the path, if it is a readable directory.
|
31
|
-
# Otherwise a warning will be printed.
|
32
|
-
#
|
33
|
-
# @yieldparam [String] path
|
34
|
-
# The directory path.
|
35
|
-
#
|
36
|
-
def check_directory(path)
|
37
|
-
check_readable(path) do |dir|
|
38
|
-
if File.directory?(dir)
|
39
|
-
yield dir
|
40
|
-
else
|
41
|
-
warn "#{dir} is not a directory!"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
#
|
47
|
-
# Checks if the path is a readable file.
|
48
|
-
#
|
49
|
-
# @yield [path]
|
50
|
-
# The block will be passed the path, if it is a readable file.
|
51
|
-
# Otherwise a warning will be printed.
|
52
|
-
#
|
53
|
-
# @yieldparam [String] path
|
54
|
-
# A file path.
|
55
|
-
#
|
56
|
-
def check_file(path)
|
57
|
-
if @project_files.include?(path)
|
58
|
-
check_readable(path) do |file|
|
59
|
-
if File.file?(file)
|
60
|
-
yield file
|
61
|
-
else
|
62
|
-
warn "#{file} is not a file!"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
#
|
69
|
-
# Checks if the path is an executable file.
|
70
|
-
#
|
71
|
-
# @yield [path]
|
72
|
-
# The block will be passed the path, if it is an executable file.
|
73
|
-
# Otherwise a warning will be printed.
|
74
|
-
#
|
75
|
-
# @yieldparam [String] path
|
76
|
-
# An path to an executable file.
|
77
|
-
#
|
78
|
-
def check_executable(path)
|
79
|
-
check_file(path) do |file|
|
80
|
-
if File.executable?(file)
|
81
|
-
yield file
|
82
|
-
else
|
83
|
-
warn "#{file} is not executable!"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
data/lib/ore/defaults.rb
DELETED
@@ -1,141 +0,0 @@
|
|
1
|
-
require 'ore/naming'
|
2
|
-
require 'ore/versions'
|
3
|
-
|
4
|
-
require 'date'
|
5
|
-
|
6
|
-
module Ore
|
7
|
-
#
|
8
|
-
# A mixin for {Project} which provides methods for assigning default
|
9
|
-
# values to project attributes.
|
10
|
-
#
|
11
|
-
module Defaults
|
12
|
-
include Naming
|
13
|
-
|
14
|
-
# The default require-paths
|
15
|
-
@@require_paths = [@@lib_dir, @@ext_dir]
|
16
|
-
|
17
|
-
# The glob to find default executables
|
18
|
-
@@executables = "#{@@bin_dir}/*"
|
19
|
-
|
20
|
-
# The globs to find all testing-files
|
21
|
-
@@test_files = [
|
22
|
-
"#{@@test_dir}/{**/}*_test.rb",
|
23
|
-
"#{@@spec_dir}/{**/}*_spec.rb"
|
24
|
-
]
|
25
|
-
|
26
|
-
# The files to always exclude
|
27
|
-
@@exclude_files = %w[
|
28
|
-
.gitignore
|
29
|
-
]
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
#
|
34
|
-
# Sets the project name using the directory name of the project.
|
35
|
-
#
|
36
|
-
def default_name!
|
37
|
-
@name = @root.basename.to_s
|
38
|
-
end
|
39
|
-
|
40
|
-
#
|
41
|
-
# Finds and sets the version of the project.
|
42
|
-
#
|
43
|
-
def default_version!
|
44
|
-
@version = (
|
45
|
-
Versions::VersionFile.find(self) ||
|
46
|
-
Versions::VersionConstant.find(self)
|
47
|
-
)
|
48
|
-
|
49
|
-
unless @version
|
50
|
-
raise(InvalidMetadata,"no version file or constant in #{@root}")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
#
|
55
|
-
# Sets the release date of the project.
|
56
|
-
#
|
57
|
-
def default_date!
|
58
|
-
@date = Date.today
|
59
|
-
end
|
60
|
-
|
61
|
-
#
|
62
|
-
# Sets the require-paths of the project.
|
63
|
-
#
|
64
|
-
def default_require_paths!
|
65
|
-
@@require_paths.each do |name|
|
66
|
-
@require_paths << name if @root.join(name).directory?
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
#
|
71
|
-
# Sets the executables of the project.
|
72
|
-
#
|
73
|
-
def default_executables!
|
74
|
-
glob(@@executables) do |path|
|
75
|
-
check_executable(path) { |exe| @executables << File.basename(exe) }
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
#
|
80
|
-
# sets the default executable of the project.
|
81
|
-
#
|
82
|
-
def default_executable!
|
83
|
-
@default_executable = if @executables.include?(@name)
|
84
|
-
@name
|
85
|
-
else
|
86
|
-
@executables.first
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
#
|
91
|
-
# Sets the default documentation of the project.
|
92
|
-
#
|
93
|
-
def default_documentation!
|
94
|
-
if file?('.yardopts')
|
95
|
-
@documentation = :yard
|
96
|
-
else
|
97
|
-
@documentation = :rdoc
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
#
|
102
|
-
# Sets the extra documentation files of the project.
|
103
|
-
#
|
104
|
-
def default_extra_doc_files!
|
105
|
-
glob('README.*') { |path| add_extra_doc_file(path) }
|
106
|
-
|
107
|
-
if @document
|
108
|
-
@document.each_extra_file { |path| add_extra_doc_file(path) }
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
#
|
113
|
-
# Sets the files of the project.
|
114
|
-
#
|
115
|
-
def default_files!
|
116
|
-
@project_files.each do |file|
|
117
|
-
@files << file unless @@exclude_files.include?(file)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
#
|
122
|
-
# Sets the test-files of the project.
|
123
|
-
#
|
124
|
-
def default_test_files!
|
125
|
-
@@test_files.each do |pattern|
|
126
|
-
glob(pattern) { |path| add_test_file(path) }
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
#
|
131
|
-
# Defaults the required version of RubyGems to `>= 1.3.6`, if the
|
132
|
-
# project uses Bundler.
|
133
|
-
#
|
134
|
-
def default_required_rubygems_version!
|
135
|
-
if bundler?
|
136
|
-
@required_rubygems_version = '>= 1.3.6'
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
141
|
-
end
|