ore-core 0.1.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 +4 -0
- data/.rspec +1 -0
- data/.yardopts +1 -0
- data/ChangeLog.md +17 -0
- data/GemspecYML.md +284 -0
- data/LICENSE.txt +21 -0
- data/README.md +68 -0
- data/Rakefile +25 -0
- data/gemspec.yml +18 -0
- data/lib/ore.rb +3 -0
- data/lib/ore/checks.rb +88 -0
- data/lib/ore/defaults.rb +140 -0
- data/lib/ore/dependency.rb +65 -0
- data/lib/ore/document_file.rb +118 -0
- data/lib/ore/exceptions.rb +3 -0
- data/lib/ore/exceptions/exception.rb +4 -0
- data/lib/ore/exceptions/invalid_metadata.rb +6 -0
- data/lib/ore/exceptions/project_not_found.rb +6 -0
- data/lib/ore/naming.rb +113 -0
- data/lib/ore/paths.rb +146 -0
- data/lib/ore/project.rb +599 -0
- data/lib/ore/settings.rb +274 -0
- data/lib/ore/specification.rb +29 -0
- data/lib/ore/versions.rb +3 -0
- data/lib/ore/versions/exceptions.rb +1 -0
- data/lib/ore/versions/exceptions/invalid_version.rb +8 -0
- data/lib/ore/versions/version.rb +75 -0
- data/lib/ore/versions/version_constant.rb +126 -0
- data/lib/ore/versions/version_file.rb +66 -0
- data/lib/rubygems_plugin.rb +40 -0
- data/ore-core.gemspec +6 -0
- data/spec/dependency_spec.rb +36 -0
- data/spec/document_file_spec.rb +29 -0
- data/spec/helpers/files.rb +7 -0
- data/spec/helpers/files/.document +5 -0
- data/spec/helpers/files/VERSION +1 -0
- data/spec/helpers/files/VERSION.yml +5 -0
- data/spec/helpers/projects.rb +13 -0
- data/spec/helpers/projects/dm-is-plugin/Gemfile +3 -0
- data/spec/helpers/projects/dm-is-plugin/VERSION +1 -0
- data/spec/helpers/projects/dm-is-plugin/dm-is-plugin.gemspec +10 -0
- data/spec/helpers/projects/dm-is-plugin/gemspec.yml +9 -0
- data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin.rb +4 -0
- data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin/is/plugin.rb +6 -0
- data/spec/helpers/projects/explicit/gemspec.yml +19 -0
- data/spec/helpers/projects/explicit/lib/explicit/version.rb +15 -0
- data/spec/helpers/projects/ffi-binding/gemspec.yml +11 -0
- data/spec/helpers/projects/ffi-binding/lib/ffi/binding/version.rb +5 -0
- data/spec/helpers/projects/jewelery/VERSION +1 -0
- data/spec/helpers/projects/jewelery/bin/jewelery +3 -0
- data/spec/helpers/projects/jewelery/gemspec.yml +6 -0
- data/spec/helpers/projects/jewelery/jewelery.gemspec +10 -0
- data/spec/helpers/projects/jewelery/lib/jewelery.rb +4 -0
- data/spec/helpers/projects/jewelery/lib/jewelery/rubies.rb +4 -0
- data/spec/helpers/projects/minimal/gemspec.yml +4 -0
- data/spec/helpers/projects/minimal/lib/minimal.rb +2 -0
- data/spec/naming_spec.rb +56 -0
- data/spec/projects/dm_plugin_project_spec.rb +29 -0
- data/spec/projects/explicit_project_spec.rb +37 -0
- data/spec/projects/ffi_binding_project_spec.rb +25 -0
- data/spec/projects/jeweler_project_spec.rb +17 -0
- data/spec/projects/minimal_project_spec.rb +17 -0
- data/spec/projects/project_examples.rb +40 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/versions/version_file_spec.rb +28 -0
- data/spec/versions/version_spec.rb +53 -0
- metadata +170 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'ore/versions/exceptions/invalid_version'
|
2
|
+
require 'ore/versions/version'
|
3
|
+
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
module Ore
|
7
|
+
module Versions
|
8
|
+
#
|
9
|
+
# Represents a version loaded from a `VERSION` file.
|
10
|
+
#
|
11
|
+
class VersionFile < Version
|
12
|
+
|
13
|
+
# Common `VERSION` file-names.
|
14
|
+
@@files = %w[VERSION VERSION.yml]
|
15
|
+
|
16
|
+
#
|
17
|
+
# Finds the `VERSION` file.
|
18
|
+
#
|
19
|
+
# @param [Project] project
|
20
|
+
# The Ore project.
|
21
|
+
#
|
22
|
+
# @return [VersionFile, nil]
|
23
|
+
# The version file of the project.
|
24
|
+
#
|
25
|
+
def self.find(project)
|
26
|
+
@@files.each do |name|
|
27
|
+
return load(project.path(name)) if project.file?(name)
|
28
|
+
end
|
29
|
+
|
30
|
+
return nil
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# Loads the version file of the project.
|
35
|
+
#
|
36
|
+
# @param [String] path
|
37
|
+
# The path to the version file.
|
38
|
+
#
|
39
|
+
# @return [VersionFile]
|
40
|
+
# The loaded version file.
|
41
|
+
#
|
42
|
+
# @raise [InvalidVersion]
|
43
|
+
# The `VERSION` file must contain either a `Hash` or a `String`.
|
44
|
+
#
|
45
|
+
def self.load(path)
|
46
|
+
data = YAML.load_file(path)
|
47
|
+
|
48
|
+
case data
|
49
|
+
when Hash
|
50
|
+
self.new(
|
51
|
+
(data[:major] || data['major']),
|
52
|
+
(data[:minor] || data['minor']),
|
53
|
+
(data[:patch] || data['patch']),
|
54
|
+
(data[:build] || data['build'])
|
55
|
+
)
|
56
|
+
when String
|
57
|
+
self.parse(data)
|
58
|
+
else
|
59
|
+
file = File.basename(@path)
|
60
|
+
raise(InvalidVersion,"invalid version data in #{file.dump}")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Ore
|
2
|
+
#
|
3
|
+
# Provides transparent access to {Ore::Specification}.
|
4
|
+
#
|
5
|
+
# @param [Symbol] name
|
6
|
+
# The constant name.
|
7
|
+
#
|
8
|
+
# @return [Object]
|
9
|
+
# The constant.
|
10
|
+
#
|
11
|
+
# @raise [NameError]
|
12
|
+
# The constant could not be found.
|
13
|
+
#
|
14
|
+
def self.const_missing(name)
|
15
|
+
if name == :Specification
|
16
|
+
begin
|
17
|
+
# attempt to load 'ore/specification' from the $LOAD_PATH
|
18
|
+
require 'ore/specification'
|
19
|
+
rescue ::LoadError
|
20
|
+
# find our `lib/` directory
|
21
|
+
lib_dir = File.expand_path(File.dirname(__FILE__))
|
22
|
+
|
23
|
+
# modify the $LOAD_PATH is 'ore/specification' is not available
|
24
|
+
$LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
|
25
|
+
|
26
|
+
begin
|
27
|
+
# attempt loading 'ore/specification' again
|
28
|
+
require 'ore/specification'
|
29
|
+
rescue ::LoadError
|
30
|
+
# ore is probably not installed, so raise a NameError
|
31
|
+
return super(name)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
return Ore.const_get(name)
|
36
|
+
end
|
37
|
+
|
38
|
+
super(name)
|
39
|
+
end
|
40
|
+
end
|
data/ore-core.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'ore/dependency'
|
3
|
+
|
4
|
+
describe Dependency do
|
5
|
+
subject { Dependency }
|
6
|
+
|
7
|
+
describe "parse" do
|
8
|
+
it "should parse a dependency string with only a name" do
|
9
|
+
dep = subject.parse('foo')
|
10
|
+
|
11
|
+
dep.name.should == 'foo'
|
12
|
+
dep.versions.should be_empty
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should parse a dependency with a version" do
|
16
|
+
dep = subject.parse('foo ~> 1.2.3')
|
17
|
+
|
18
|
+
dep.name.should == 'foo'
|
19
|
+
dep.versions.should == ['~> 1.2.3']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "parse_versions" do
|
24
|
+
it "should parse a single version" do
|
25
|
+
dep = subject.parse_versions('foo', '~> 1.2.3')
|
26
|
+
|
27
|
+
dep.versions.should == ['~> 1.2.3']
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should parse multiple versions" do
|
31
|
+
dep = subject.parse_versions('foo', '~> 1.2.3, >= 1.4.0')
|
32
|
+
|
33
|
+
dep.versions.should == ['~> 1.2.3', '>= 1.4.0']
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'helpers/files'
|
3
|
+
|
4
|
+
require 'ore/document_file'
|
5
|
+
|
6
|
+
describe DocumentFile do
|
7
|
+
include Helpers::Files
|
8
|
+
|
9
|
+
subject { DocumentFile.new(file('.document')) }
|
10
|
+
|
11
|
+
it "should parse the file globs from a .document file" do
|
12
|
+
subject.file_globs.to_a.should =~ %w[
|
13
|
+
lib/**/*.rb
|
14
|
+
bin/*
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should parse the extra-file globs from a .document file" do
|
19
|
+
subject.extra_file_globs.to_a.should =~ %w[
|
20
|
+
ChangeLog.md
|
21
|
+
COPYING.txt
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not consume the - separator" do
|
26
|
+
subject.file_globs.should_not include('-')
|
27
|
+
subject.extra_file_globs.should_not include('-')
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
1.2.3
|
@@ -0,0 +1 @@
|
|
1
|
+
1.2.3
|
@@ -0,0 +1,19 @@
|
|
1
|
+
name: Explicit
|
2
|
+
summary: An explicit library
|
3
|
+
description: This is a library written by strict developers.
|
4
|
+
license: MIT
|
5
|
+
homepage: http://github.com/user/explicit
|
6
|
+
email: user@example.com
|
7
|
+
authors:
|
8
|
+
- Senior Software Engineer
|
9
|
+
- Junior Software Engineer
|
10
|
+
|
11
|
+
post_install_message: |
|
12
|
+
Thanks for installing the Explicit gem!
|
13
|
+
|
14
|
+
To start Explicit, run the following command:
|
15
|
+
|
16
|
+
$ explicit
|
17
|
+
|
18
|
+
required_ruby_version: >= 1.8.7
|
19
|
+
required_rubygems_version: >= 1.3.7
|
@@ -0,0 +1,11 @@
|
|
1
|
+
name: ffi-binding
|
2
|
+
summary: FFI Binding
|
3
|
+
description: FFI Binding for some C library
|
4
|
+
homepage: http://github.com/wmeissner/ffi-binding
|
5
|
+
email: wmeissner@example.com
|
6
|
+
authors: Wayne Meissner
|
7
|
+
|
8
|
+
requirements: libstuff >= 1.0
|
9
|
+
|
10
|
+
dependencies:
|
11
|
+
ffi: ~> 0.6.0
|
@@ -0,0 +1 @@
|
|
1
|
+
1.2.3
|
data/spec/naming_spec.rb
ADDED
@@ -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
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'helpers/projects'
|
3
|
+
require 'projects/project_examples'
|
4
|
+
|
5
|
+
describe "DataMapper Plugin project" do
|
6
|
+
include Helpers::Projects
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
@project = project('dm-is-plugin')
|
10
|
+
end
|
11
|
+
|
12
|
+
it_should_behave_like 'an Ore Project'
|
13
|
+
|
14
|
+
it "should correctly guess the namespace" do
|
15
|
+
@project.namespace.should == 'DataMapper::Is::Plugin'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a namespace directory" do
|
19
|
+
@project.namespace_dir.should == 'dm-is-plugin'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should use Bundler" do
|
23
|
+
@project.should be_bundler
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should default the required RubyGems version to >= 1.3.6" do
|
27
|
+
@project.required_rubygems_version.should == '>= 1.3.6'
|
28
|
+
end
|
29
|
+
end
|