librarian-puppet-maestrodev 0.9.7.5 → 0.9.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +3 -3
- data/bin/librarian-puppet +0 -2
- data/lib/librarian/puppet.rb +10 -1
- data/lib/librarian/puppet/extension.rb +68 -11
- data/lib/librarian/puppet/requirement.rb +39 -0
- data/lib/librarian/puppet/source.rb +1 -0
- data/lib/librarian/puppet/source/forge.rb +8 -1
- data/lib/librarian/puppet/source/git.rb +2 -0
- data/lib/librarian/puppet/source/githubtarball.rb +16 -1
- data/lib/librarian/puppet/version.rb +1 -1
- metadata +33 -112
- data/vendor/librarian/CHANGELOG.md +0 -185
- data/vendor/librarian/Gemfile +0 -6
- data/vendor/librarian/MIT-LICENSE +0 -20
- data/vendor/librarian/README.md +0 -403
- data/vendor/librarian/Rakefile +0 -34
- data/vendor/librarian/bin/librarian-chef +0 -7
- data/vendor/librarian/bin/librarian-mock +0 -7
- data/vendor/librarian/config/cucumber.yaml +0 -1
- data/vendor/librarian/features/chef/cli/init.feature +0 -11
- data/vendor/librarian/features/chef/cli/install.feature +0 -64
- data/vendor/librarian/features/chef/cli/show.feature +0 -77
- data/vendor/librarian/features/chef/cli/version.feature +0 -11
- data/vendor/librarian/features/support/env.rb +0 -9
- data/vendor/librarian/lib/librarian.rb +0 -19
- data/vendor/librarian/lib/librarian/action.rb +0 -5
- data/vendor/librarian/lib/librarian/action/base.rb +0 -24
- data/vendor/librarian/lib/librarian/action/clean.rb +0 -44
- data/vendor/librarian/lib/librarian/action/ensure.rb +0 -24
- data/vendor/librarian/lib/librarian/action/install.rb +0 -99
- data/vendor/librarian/lib/librarian/action/resolve.rb +0 -81
- data/vendor/librarian/lib/librarian/action/update.rb +0 -78
- data/vendor/librarian/lib/librarian/chef.rb +0 -1
- data/vendor/librarian/lib/librarian/chef/cli.rb +0 -48
- data/vendor/librarian/lib/librarian/chef/dsl.rb +0 -15
- data/vendor/librarian/lib/librarian/chef/environment.rb +0 -27
- data/vendor/librarian/lib/librarian/chef/extension.rb +0 -9
- data/vendor/librarian/lib/librarian/chef/integration/knife.rb +0 -42
- data/vendor/librarian/lib/librarian/chef/manifest_reader.rb +0 -59
- data/vendor/librarian/lib/librarian/chef/source.rb +0 -3
- data/vendor/librarian/lib/librarian/chef/source/git.rb +0 -25
- data/vendor/librarian/lib/librarian/chef/source/local.rb +0 -69
- data/vendor/librarian/lib/librarian/chef/source/path.rb +0 -12
- data/vendor/librarian/lib/librarian/chef/source/site.rb +0 -446
- data/vendor/librarian/lib/librarian/chef/templates/Cheffile +0 -15
- data/vendor/librarian/lib/librarian/cli.rb +0 -205
- data/vendor/librarian/lib/librarian/cli/manifest_presenter.rb +0 -79
- data/vendor/librarian/lib/librarian/config.rb +0 -7
- data/vendor/librarian/lib/librarian/config/database.rb +0 -205
- data/vendor/librarian/lib/librarian/config/file_source.rb +0 -47
- data/vendor/librarian/lib/librarian/config/hash_source.rb +0 -33
- data/vendor/librarian/lib/librarian/config/source.rb +0 -149
- data/vendor/librarian/lib/librarian/dependency.rb +0 -91
- data/vendor/librarian/lib/librarian/dsl.rb +0 -108
- data/vendor/librarian/lib/librarian/dsl/receiver.rb +0 -48
- data/vendor/librarian/lib/librarian/dsl/target.rb +0 -172
- data/vendor/librarian/lib/librarian/environment.rb +0 -134
- data/vendor/librarian/lib/librarian/error.rb +0 -4
- data/vendor/librarian/lib/librarian/helpers.rb +0 -13
- data/vendor/librarian/lib/librarian/lockfile.rb +0 -29
- data/vendor/librarian/lib/librarian/lockfile/compiler.rb +0 -66
- data/vendor/librarian/lib/librarian/lockfile/parser.rb +0 -100
- data/vendor/librarian/lib/librarian/logger.rb +0 -46
- data/vendor/librarian/lib/librarian/manifest.rb +0 -132
- data/vendor/librarian/lib/librarian/manifest_set.rb +0 -154
- data/vendor/librarian/lib/librarian/mock.rb +0 -1
- data/vendor/librarian/lib/librarian/mock/cli.rb +0 -19
- data/vendor/librarian/lib/librarian/mock/dsl.rb +0 -15
- data/vendor/librarian/lib/librarian/mock/environment.rb +0 -24
- data/vendor/librarian/lib/librarian/mock/extension.rb +0 -9
- data/vendor/librarian/lib/librarian/mock/source.rb +0 -1
- data/vendor/librarian/lib/librarian/mock/source/mock.rb +0 -97
- data/vendor/librarian/lib/librarian/mock/source/mock/registry.rb +0 -83
- data/vendor/librarian/lib/librarian/resolution.rb +0 -44
- data/vendor/librarian/lib/librarian/resolver.rb +0 -78
- data/vendor/librarian/lib/librarian/resolver/implementation.rb +0 -118
- data/vendor/librarian/lib/librarian/source.rb +0 -2
- data/vendor/librarian/lib/librarian/source/git.rb +0 -150
- data/vendor/librarian/lib/librarian/source/git/repository.rb +0 -217
- data/vendor/librarian/lib/librarian/source/local.rb +0 -61
- data/vendor/librarian/lib/librarian/source/path.rb +0 -74
- data/vendor/librarian/lib/librarian/spec.rb +0 -13
- data/vendor/librarian/lib/librarian/spec_change_set.rb +0 -173
- data/vendor/librarian/lib/librarian/specfile.rb +0 -18
- data/vendor/librarian/lib/librarian/support/abstract_method.rb +0 -21
- data/vendor/librarian/lib/librarian/ui.rb +0 -64
- data/vendor/librarian/lib/librarian/version.rb +0 -3
- data/vendor/librarian/librarian.gemspec +0 -34
- data/vendor/librarian/spec/functional/chef/source/git_spec.rb +0 -432
- data/vendor/librarian/spec/functional/chef/source/site_spec.rb +0 -215
- data/vendor/librarian/spec/functional/source/git/repository_spec.rb +0 -149
- data/vendor/librarian/spec/unit/action/base_spec.rb +0 -18
- data/vendor/librarian/spec/unit/action/clean_spec.rb +0 -102
- data/vendor/librarian/spec/unit/action/ensure_spec.rb +0 -37
- data/vendor/librarian/spec/unit/action/install_spec.rb +0 -111
- data/vendor/librarian/spec/unit/config/database_spec.rb +0 -319
- data/vendor/librarian/spec/unit/dependency_spec.rb +0 -36
- data/vendor/librarian/spec/unit/dsl_spec.rb +0 -194
- data/vendor/librarian/spec/unit/environment_spec.rb +0 -9
- data/vendor/librarian/spec/unit/lockfile/parser_spec.rb +0 -162
- data/vendor/librarian/spec/unit/lockfile_spec.rb +0 -65
- data/vendor/librarian/spec/unit/manifest_set_spec.rb +0 -202
- data/vendor/librarian/spec/unit/manifest_spec.rb +0 -36
- data/vendor/librarian/spec/unit/mock/source/mock_spec.rb +0 -22
- data/vendor/librarian/spec/unit/resolver_spec.rb +0 -192
- data/vendor/librarian/spec/unit/source/git_spec.rb +0 -29
- data/vendor/librarian/spec/unit/spec_change_set_spec.rb +0 -169
@@ -1,47 +0,0 @@
|
|
1
|
-
require "yaml"
|
2
|
-
|
3
|
-
require "librarian/config/source"
|
4
|
-
|
5
|
-
module Librarian
|
6
|
-
module Config
|
7
|
-
class FileSource < Source
|
8
|
-
|
9
|
-
attr_accessor :config_path
|
10
|
-
private :config_path=
|
11
|
-
|
12
|
-
def initialize(adapter_name, options = { })
|
13
|
-
super
|
14
|
-
|
15
|
-
self.config_path = options.delete(:config_path) or raise ArgumentError, "must provide config_path"
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_s
|
19
|
-
config_path
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def load
|
25
|
-
return { } unless File.file?(config_path)
|
26
|
-
|
27
|
-
raw = YAML.load_file(config_path)
|
28
|
-
return { } unless Hash === raw
|
29
|
-
|
30
|
-
translate_raw_to_config(raw)
|
31
|
-
end
|
32
|
-
|
33
|
-
def save(config)
|
34
|
-
raw = translate_config_to_raw(config)
|
35
|
-
|
36
|
-
if config.empty?
|
37
|
-
File.delete(config_path) if File.file?(config_path)
|
38
|
-
else
|
39
|
-
config_dir = File.dirname(config_path)
|
40
|
-
FileUtils.mkpath(config_dir) unless File.directory?(config_dir)
|
41
|
-
File.open(config_path, "wb"){|f| YAML.dump(raw, f)}
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "librarian/source"
|
2
|
-
|
3
|
-
module Librarian
|
4
|
-
module Config
|
5
|
-
class HashSource < Source
|
6
|
-
|
7
|
-
attr_accessor :name, :raw
|
8
|
-
private :name=, :raw=
|
9
|
-
|
10
|
-
def initialize(adapter_name, options = { })
|
11
|
-
super
|
12
|
-
|
13
|
-
self.name = options.delete(:name) or raise ArgumentError, "must provide name"
|
14
|
-
self.raw = options.delete(:raw) or raise ArgumentError, "must provide raw"
|
15
|
-
end
|
16
|
-
|
17
|
-
def to_s
|
18
|
-
name
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def load
|
24
|
-
translate_raw_to_config(raw)
|
25
|
-
end
|
26
|
-
|
27
|
-
def save(config)
|
28
|
-
raise Error, "nonsense!"
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,149 +0,0 @@
|
|
1
|
-
require "librarian/error"
|
2
|
-
|
3
|
-
module Librarian
|
4
|
-
module Config
|
5
|
-
class Source
|
6
|
-
|
7
|
-
RAW_KEY_SUFFIX_VALIDITY_PATTERN =
|
8
|
-
/\A[A-Z0-9_]+\z/
|
9
|
-
CONFIG_KEY_VALIDITY_PATTERN =
|
10
|
-
/\A[a-z][a-z0-9\-]+(?:\.[a-z0-9\-]+)*\z/
|
11
|
-
|
12
|
-
class << self
|
13
|
-
def raw_key_suffix_validity_pattern
|
14
|
-
RAW_KEY_SUFFIX_VALIDITY_PATTERN
|
15
|
-
end
|
16
|
-
def config_key_validity_pattern
|
17
|
-
CONFIG_KEY_VALIDITY_PATTERN
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
attr_accessor :adapter_name
|
22
|
-
private :adapter_name=
|
23
|
-
|
24
|
-
def initialize(adapter_name, options = { })
|
25
|
-
self.adapter_name = adapter_name
|
26
|
-
|
27
|
-
self.forbidden_keys = options.delete(:forbidden_keys) || []
|
28
|
-
end
|
29
|
-
|
30
|
-
def [](key)
|
31
|
-
load!
|
32
|
-
|
33
|
-
data[key]
|
34
|
-
end
|
35
|
-
|
36
|
-
def []=(key, value)
|
37
|
-
key_permitted?(key) or raise Error, "key not permitted: #{key.inspect}"
|
38
|
-
value_permitted?(key, value) or raise Error, "value for key #{key.inspect} not permitted: #{value.inspect}"
|
39
|
-
|
40
|
-
load!
|
41
|
-
if value.nil?
|
42
|
-
data.delete(key)
|
43
|
-
else
|
44
|
-
data[key] = value
|
45
|
-
end
|
46
|
-
save(data)
|
47
|
-
end
|
48
|
-
|
49
|
-
def keys
|
50
|
-
load!
|
51
|
-
|
52
|
-
data.keys
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
attr_accessor :data, :forbidden_keys
|
58
|
-
|
59
|
-
def load!
|
60
|
-
self.data = load unless data
|
61
|
-
end
|
62
|
-
|
63
|
-
def key_permitted?(key)
|
64
|
-
String === key &&
|
65
|
-
config_key_validity_pattern === key &&
|
66
|
-
!forbidden_keys.any?{|k| k === key}
|
67
|
-
end
|
68
|
-
|
69
|
-
def value_permitted?(key, value)
|
70
|
-
return true if value.nil?
|
71
|
-
|
72
|
-
String === value
|
73
|
-
end
|
74
|
-
|
75
|
-
def raw_key_valid?(key)
|
76
|
-
return false unless key.start_with?(raw_key_prefix)
|
77
|
-
|
78
|
-
suffix = key[raw_key_prefix.size..-1]
|
79
|
-
raw_key_suffix_validity_pattern =~ suffix
|
80
|
-
end
|
81
|
-
|
82
|
-
def raw_key_suffix_validity_pattern
|
83
|
-
self.class.raw_key_suffix_validity_pattern
|
84
|
-
end
|
85
|
-
|
86
|
-
def config_key_valid?(key)
|
87
|
-
config_key_validity_pattern === key
|
88
|
-
end
|
89
|
-
|
90
|
-
def config_key_validity_pattern
|
91
|
-
self.class.config_key_validity_pattern
|
92
|
-
end
|
93
|
-
|
94
|
-
def raw_key_prefix
|
95
|
-
@key_prefix ||= "LIBRARIAN_#{adapter_name.upcase}_"
|
96
|
-
end
|
97
|
-
|
98
|
-
def assert_raw_keys_valid!(raw)
|
99
|
-
bad_keys = raw.keys.reject{|k| raw_key_valid?(k)}
|
100
|
-
unless bad_keys.empty?
|
101
|
-
config_path_s = config_path.to_s.inspect
|
102
|
-
bad_keys_s = bad_keys.map(&:inspect).join(", ")
|
103
|
-
raise Error, "config #{to_s} has bad keys: #{bad_keys_s}"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def assert_config_keys_valid!(config)
|
108
|
-
bad_keys = config.keys.reject{|k| config_key_valid?(k)}
|
109
|
-
unless bad_keys.empty?
|
110
|
-
bad_keys_s = bad_keys.map(&:inspect).join(", ")
|
111
|
-
raise Error, "config has bad keys: #{bad_keys_s}"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
def assert_values_valid!(data)
|
116
|
-
bad_data = data.reject{|k, v| String === v}
|
117
|
-
bad_keys = bad_data.keys
|
118
|
-
|
119
|
-
unless bad_keys.empty?
|
120
|
-
bad_keys_s = bad_keys.map(&:inspect).join(", ")
|
121
|
-
raise Error, "config has bad values for keys: #{bad_keys_s}"
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def translate_raw_to_config(raw)
|
126
|
-
assert_raw_keys_valid!(raw)
|
127
|
-
assert_values_valid!(raw)
|
128
|
-
|
129
|
-
Hash[raw.map do |key, value|
|
130
|
-
key = key[raw_key_prefix.size .. -1]
|
131
|
-
key = key.downcase.gsub(/__/, ".").gsub(/_/, "-")
|
132
|
-
[key, value]
|
133
|
-
end]
|
134
|
-
end
|
135
|
-
|
136
|
-
def translate_config_to_raw(config)
|
137
|
-
assert_config_keys_valid!(config)
|
138
|
-
assert_values_valid!(config)
|
139
|
-
|
140
|
-
Hash[config.map do |key, value|
|
141
|
-
key = key.gsub(/\./, "__").gsub(/\-/, "_").upcase
|
142
|
-
key = "#{raw_key_prefix}#{key}"
|
143
|
-
[key, value]
|
144
|
-
end]
|
145
|
-
end
|
146
|
-
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
module Librarian
|
4
|
-
class Dependency
|
5
|
-
|
6
|
-
class Requirement
|
7
|
-
def initialize(*args)
|
8
|
-
args = initialize_normalize_args(args)
|
9
|
-
|
10
|
-
self.backing = Gem::Requirement.create(*args)
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_gem_requirement
|
14
|
-
backing
|
15
|
-
end
|
16
|
-
|
17
|
-
def satisfied_by?(version)
|
18
|
-
to_gem_requirement.satisfied_by?(version.to_gem_version)
|
19
|
-
end
|
20
|
-
|
21
|
-
def ==(other)
|
22
|
-
to_gem_requirement == other.to_gem_requirement
|
23
|
-
end
|
24
|
-
|
25
|
-
def to_s
|
26
|
-
to_gem_requirement.to_s
|
27
|
-
end
|
28
|
-
|
29
|
-
protected
|
30
|
-
|
31
|
-
attr_accessor :backing
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def initialize_normalize_args(args)
|
36
|
-
args.map do |arg|
|
37
|
-
arg = arg.backing if self.class === arg
|
38
|
-
arg
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
attr_accessor :name, :requirement, :source
|
44
|
-
private :name=, :requirement=, :source=
|
45
|
-
|
46
|
-
def initialize(name, requirement, source)
|
47
|
-
assert_name_valid! name
|
48
|
-
|
49
|
-
self.name = name
|
50
|
-
self.requirement = Requirement.new(requirement)
|
51
|
-
self.source = source
|
52
|
-
|
53
|
-
@manifests = nil
|
54
|
-
end
|
55
|
-
|
56
|
-
def manifests
|
57
|
-
@manifests ||= cache_manifests!
|
58
|
-
end
|
59
|
-
|
60
|
-
def cache_manifests!
|
61
|
-
source.manifests(name)
|
62
|
-
end
|
63
|
-
|
64
|
-
def satisfied_by?(manifest)
|
65
|
-
manifest.satisfies?(self)
|
66
|
-
end
|
67
|
-
|
68
|
-
def to_s
|
69
|
-
"#{name} (#{requirement}) <#{source}>"
|
70
|
-
end
|
71
|
-
|
72
|
-
def ==(other)
|
73
|
-
!other.nil? &&
|
74
|
-
self.class == other.class &&
|
75
|
-
self.name == other.name &&
|
76
|
-
self.requirement == other.requirement &&
|
77
|
-
self.source == other.source
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def environment
|
83
|
-
source.environment
|
84
|
-
end
|
85
|
-
|
86
|
-
def assert_name_valid!(name)
|
87
|
-
raise ArgumentError, "name (#{name.inspect}) must be sensible" unless name =~ /\A\S(?:.*\S)?\z/
|
88
|
-
end
|
89
|
-
|
90
|
-
end
|
91
|
-
end
|
@@ -1,108 +0,0 @@
|
|
1
|
-
require 'librarian/dependency'
|
2
|
-
require 'librarian/dsl/receiver'
|
3
|
-
require 'librarian/dsl/target'
|
4
|
-
|
5
|
-
module Librarian
|
6
|
-
class Dsl
|
7
|
-
|
8
|
-
class Error < Exception
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_accessor :environment
|
12
|
-
private :environment=
|
13
|
-
|
14
|
-
class << self
|
15
|
-
|
16
|
-
def run(environment, specfile = nil, precache_sources = [], &block)
|
17
|
-
new(environment).run(specfile, precache_sources, &block)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def dependency(name)
|
23
|
-
dependency_name = name
|
24
|
-
dependency_type = Dependency
|
25
|
-
singleton_class = class << self; self end
|
26
|
-
singleton_class.instance_eval do
|
27
|
-
define_method(:dependency_name) { dependency_name }
|
28
|
-
define_method(:dependency_type) { dependency_type }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
define_method(:source_types) { [] }
|
33
|
-
|
34
|
-
def source(options)
|
35
|
-
name = options.keys.first
|
36
|
-
type = options[name]
|
37
|
-
types = source_types
|
38
|
-
types << [name, type]
|
39
|
-
singleton_class = class << self; self end
|
40
|
-
singleton_class.instance_eval do
|
41
|
-
define_method(:source_types) { types }
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
define_method(:source_shortcuts) { {} }
|
46
|
-
|
47
|
-
def shortcut(name, options)
|
48
|
-
instances = source_shortcuts
|
49
|
-
instances[name] = options
|
50
|
-
singleton_class = class << self; self end
|
51
|
-
singleton_class.instance_eval do
|
52
|
-
define_method(:source_shortcuts) { instances }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def delegate_to_class(*names)
|
57
|
-
names.each do |name|
|
58
|
-
define_method(name) { self.class.send(name) }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
delegate_to_class :dependency_name, :dependency_type, :source_types, :source_shortcuts
|
65
|
-
|
66
|
-
def initialize(environment)
|
67
|
-
self.environment = environment
|
68
|
-
end
|
69
|
-
|
70
|
-
def run(specfile = nil, sources = [])
|
71
|
-
Target.new(self).tap do |target|
|
72
|
-
target.precache_sources(sources)
|
73
|
-
debug_named_source_cache("Pre-Cached Sources", target)
|
74
|
-
|
75
|
-
receiver = Receiver.new(target)
|
76
|
-
if block_given?
|
77
|
-
receiver.run(&Proc.new)
|
78
|
-
else
|
79
|
-
case specfile
|
80
|
-
when Specfile, String, Proc
|
81
|
-
receiver.run(specfile)
|
82
|
-
else
|
83
|
-
raise ArgumentError, "specfile must be a #{Specfile}, #{String}, or #{Proc} if no block is given (it was #{specfile.inspect})"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
debug_named_source_cache("Post-Cached Sources", target)
|
88
|
-
end.to_spec
|
89
|
-
end
|
90
|
-
|
91
|
-
def debug_named_source_cache(name, target)
|
92
|
-
source_cache = target.source_cache
|
93
|
-
debug { "#{name}:" }
|
94
|
-
source_cache.each do |key, value|
|
95
|
-
type = key[0]
|
96
|
-
attributes = key[1...key.size]
|
97
|
-
debug { " #{key.inspect}" }
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
def debug(*args, &block)
|
104
|
-
environment.logger.debug(*args, &block)
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'librarian/specfile'
|
2
|
-
|
3
|
-
module Librarian
|
4
|
-
class Dsl
|
5
|
-
class Receiver
|
6
|
-
|
7
|
-
def initialize(target)
|
8
|
-
singleton_class = class << self; self end
|
9
|
-
singleton_class.class_eval do
|
10
|
-
define_method(target.dependency_name) do |*args, &block|
|
11
|
-
target.dependency(*args, &block)
|
12
|
-
end
|
13
|
-
define_method(:source) do |*args, &block|
|
14
|
-
target.source(*args, &block)
|
15
|
-
end
|
16
|
-
target.source_types.each do |source_type|
|
17
|
-
name = source_type[0]
|
18
|
-
define_method(name) do |*args, &block|
|
19
|
-
target.source(name, *args, &block)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def run(specfile = nil)
|
26
|
-
if block_given?
|
27
|
-
instance_eval(&Proc.new)
|
28
|
-
else
|
29
|
-
case specfile
|
30
|
-
when Specfile
|
31
|
-
eval(specfile.path.read, instance_binding, specfile.path.to_s, 1)
|
32
|
-
when String
|
33
|
-
eval(specfile, instance_binding)
|
34
|
-
when Proc
|
35
|
-
instance_eval(&specfile)
|
36
|
-
else
|
37
|
-
raise ArgumentError, "specfile must be a #{Specfile}, #{String}, or #{Proc} if no block is given (it was #{specfile.inspect})"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def instance_binding
|
43
|
-
binding
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|