gem_loader 0.0.2
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/.gitignore +2 -0
- data/README +0 -0
- data/Rakefile +29 -0
- data/VERSION +1 -0
- data/depends.rb +16 -0
- data/gem_loader.gemspec +52 -0
- data/lib/gem_loader.rb +15 -0
- data/lib/gem_loader/base.rb +47 -0
- data/lib/gem_loader/gem.rb +42 -0
- data/lib/gem_loader/scope.rb +56 -0
- data/spec/lib/gem_loader_spec.rb +7 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +6 -0
- metadata +75 -0
data/.gitignore
ADDED
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path("../depends.rb", __FILE__)
|
2
|
+
GemLoader.require :test, :rakefile
|
3
|
+
|
4
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
5
|
+
spec.libs = [ 'lib', 'spec' ]
|
6
|
+
spec.spec_opts = ['--options', "spec/spec.opts"]
|
7
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :spec do
|
11
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
12
|
+
spec.libs = [ 'lib', 'spec' ]
|
13
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
14
|
+
spec.rcov = true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
Jeweler::Tasks.new do |gem|
|
20
|
+
gem.name = "gem_loader"
|
21
|
+
gem.summary = "a tiny gem's dependencies loader."
|
22
|
+
gem.email = "Sunteya@gmail.com"
|
23
|
+
gem.homepage = "http://github.com/sunteya/gem_loader"
|
24
|
+
gem.authors = ["Sunteya"]
|
25
|
+
end
|
26
|
+
Jeweler::GemcutterTasks.new
|
27
|
+
|
28
|
+
task :spec => :check_dependencies
|
29
|
+
task :default => :spec
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.2
|
data/depends.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require File.expand_path("../lib/gem_loader", __FILE__)
|
3
|
+
|
4
|
+
|
5
|
+
GemLoader.setup do
|
6
|
+
scope :test do
|
7
|
+
gem :rspec, ">= 1.3.0", :require => "spec"
|
8
|
+
end
|
9
|
+
|
10
|
+
scope :rakefile do
|
11
|
+
gem :rake, ">= 0.8.7"
|
12
|
+
gem :jeweler, ">= 1.4.0"
|
13
|
+
|
14
|
+
require 'spec/rake/spectask'
|
15
|
+
end
|
16
|
+
end
|
data/gem_loader.gemspec
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{gem_loader}
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Sunteya"]
|
12
|
+
s.date = %q{2010-03-26}
|
13
|
+
s.email = %q{Sunteya@gmail.com}
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
"README"
|
16
|
+
]
|
17
|
+
s.files = [
|
18
|
+
".gitignore",
|
19
|
+
"README",
|
20
|
+
"Rakefile",
|
21
|
+
"VERSION",
|
22
|
+
"depends.rb",
|
23
|
+
"gem_loader.gemspec",
|
24
|
+
"lib/gem_loader.rb",
|
25
|
+
"lib/gem_loader/base.rb",
|
26
|
+
"lib/gem_loader/gem.rb",
|
27
|
+
"lib/gem_loader/scope.rb",
|
28
|
+
"spec/lib/gem_loader_spec.rb",
|
29
|
+
"spec/spec.opts",
|
30
|
+
"spec/spec_helper.rb"
|
31
|
+
]
|
32
|
+
s.homepage = %q{http://github.com/sunteya/gem_loader}
|
33
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
34
|
+
s.require_paths = ["lib"]
|
35
|
+
s.rubygems_version = %q{1.3.6}
|
36
|
+
s.summary = %q{a tiny gem's dependencies loader.}
|
37
|
+
s.test_files = [
|
38
|
+
"spec/lib/gem_loader_spec.rb",
|
39
|
+
"spec/spec_helper.rb"
|
40
|
+
]
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
47
|
+
else
|
48
|
+
end
|
49
|
+
else
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
data/lib/gem_loader.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path("../gem_loader/scope", __FILE__)
|
2
|
+
require File.expand_path("../gem_loader/gem", __FILE__)
|
3
|
+
require File.expand_path("../gem_loader/base", __FILE__)
|
4
|
+
|
5
|
+
|
6
|
+
module GemLoader
|
7
|
+
|
8
|
+
def self.instance
|
9
|
+
@instance ||= Base.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.method_missing(sym, *args, &block)
|
13
|
+
self.instance.send(sym, *args, &block)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module GemLoader
|
2
|
+
class Base
|
3
|
+
attr_accessor :scopes
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
self.scopes = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def scope(name)
|
10
|
+
self.scopes ||= {}
|
11
|
+
self.scopes[name] ||= Scope.new(name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def setup(&block)
|
15
|
+
Dsl.new(self, &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def load(*args)
|
19
|
+
scope_names = [ args ].flatten
|
20
|
+
scope_names.each do |scope_name|
|
21
|
+
self.scope(scope_name).load
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def require(*args)
|
26
|
+
scope_names = [ args ].flatten
|
27
|
+
self.load(scope_names)
|
28
|
+
|
29
|
+
scope_names.each do |scope_name|
|
30
|
+
self.scope(scope_name).require
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Dsl
|
35
|
+
attr_accessor :parent
|
36
|
+
|
37
|
+
def initialize(parent, &block)
|
38
|
+
self.parent = parent
|
39
|
+
instance_eval(&block)
|
40
|
+
end
|
41
|
+
|
42
|
+
def scope(name, &block)
|
43
|
+
self.parent.scope(name).dsl(&block)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module GemLoader
|
2
|
+
class Gem
|
3
|
+
attr_accessor :name, :version, :options, :requires
|
4
|
+
|
5
|
+
def initialize(name, version = nil, options = {})
|
6
|
+
self.name = name.to_s
|
7
|
+
self.version = version
|
8
|
+
self.options = options || {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def load
|
12
|
+
if self.version
|
13
|
+
Kernel.send :gem, self.name, self.version
|
14
|
+
else
|
15
|
+
Kernel.send :gem, self.name
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def require
|
20
|
+
if self.options.include?(:require)
|
21
|
+
[ self.options[:require] ].flatten.compact.each do |lib|
|
22
|
+
Kernel.send :require, lib.to_s
|
23
|
+
end
|
24
|
+
else
|
25
|
+
Kernel.send :require, self.name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def dsl(&block)
|
30
|
+
Dsl.new(self, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
class Dsl
|
34
|
+
attr_accessor :parent
|
35
|
+
|
36
|
+
def initialize(parent, &block)
|
37
|
+
self.parent = parent
|
38
|
+
instance_eval(&block) if block
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module GemLoader
|
2
|
+
class Scope
|
3
|
+
attr_accessor :name, :gems, :libs
|
4
|
+
|
5
|
+
def initialize(name)
|
6
|
+
self.name = name
|
7
|
+
self.gems = []
|
8
|
+
self.libs = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def load
|
12
|
+
self.gems.each do |gem|
|
13
|
+
gem.load
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def require
|
18
|
+
self.gems.each do |gem|
|
19
|
+
gem.require
|
20
|
+
end
|
21
|
+
|
22
|
+
self.libs.flatten.each do |lib|
|
23
|
+
Kernel.send :require, lib.to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def gem(name, version, options)
|
28
|
+
(self.gems ||= []) << Gem.new(name, version, options)
|
29
|
+
self.gems.last
|
30
|
+
end
|
31
|
+
|
32
|
+
def dsl(&block)
|
33
|
+
Dsl.new(self, &block)
|
34
|
+
end
|
35
|
+
|
36
|
+
class Dsl
|
37
|
+
attr_accessor :parent
|
38
|
+
|
39
|
+
def initialize(parent, &block)
|
40
|
+
self.parent = parent
|
41
|
+
instance_eval(&block)
|
42
|
+
end
|
43
|
+
|
44
|
+
def gem(*args, &block)
|
45
|
+
options = args.pop if args.last.is_a?(Hash)
|
46
|
+
name, version = *args
|
47
|
+
|
48
|
+
self.parent.gem(name, version, options).dsl(&block)
|
49
|
+
end
|
50
|
+
|
51
|
+
def require(*args)
|
52
|
+
self.parent.libs << [ args ].flatten
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gem_loader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Sunteya
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-03-26 00:00:00 +08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description:
|
22
|
+
email: Sunteya@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- README
|
29
|
+
files:
|
30
|
+
- .gitignore
|
31
|
+
- README
|
32
|
+
- Rakefile
|
33
|
+
- VERSION
|
34
|
+
- depends.rb
|
35
|
+
- gem_loader.gemspec
|
36
|
+
- lib/gem_loader.rb
|
37
|
+
- lib/gem_loader/base.rb
|
38
|
+
- lib/gem_loader/gem.rb
|
39
|
+
- lib/gem_loader/scope.rb
|
40
|
+
- spec/lib/gem_loader_spec.rb
|
41
|
+
- spec/spec.opts
|
42
|
+
- spec/spec_helper.rb
|
43
|
+
has_rdoc: true
|
44
|
+
homepage: http://github.com/sunteya/gem_loader
|
45
|
+
licenses: []
|
46
|
+
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options:
|
49
|
+
- --charset=UTF-8
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 1.3.6
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: a tiny gem's dependencies loader.
|
73
|
+
test_files:
|
74
|
+
- spec/lib/gem_loader_spec.rb
|
75
|
+
- spec/spec_helper.rb
|