ore 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|