boxgrinder-core 0.3.9 → 0.3.10
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/CHANGELOG +6 -0
- data/Manifest +0 -44
- data/boxgrinder-core.gemspec +9 -10
- data/lib/boxgrinder-core/helpers/appliance-config-helper.rb +33 -16
- data/lib/boxgrinder-core/models/appliance-config.rb +19 -0
- data/lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml +1 -1
- data/lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml +1 -1
- data/lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml +1 -1
- data/rubygem-boxgrinder-core.spec +7 -1
- data/spec/helpers/appliance-config-helper-spec.rb +72 -0
- metadata +6 -8
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
v0.3.10
|
2
|
+
|
3
|
+
* [BGBUILD-324] Add wildcard to packages schema
|
4
|
+
* [BGBUILD-320] Support variable substitution in any string value field of appliance definition
|
5
|
+
* [BGBUILD-327] Resolve appliance definition variables in ENV if they are not defined
|
6
|
+
|
1
7
|
v0.3.9
|
2
8
|
|
3
9
|
* [BGBUILD-312] Discover which user to switch to after root dependent sections have been executed
|
data/Manifest
CHANGED
@@ -1,44 +0,0 @@
|
|
1
|
-
CHANGELOG
|
2
|
-
LICENSE
|
3
|
-
Manifest
|
4
|
-
README
|
5
|
-
Rakefile
|
6
|
-
boxgrinder-core.gemspec
|
7
|
-
lib/boxgrinder-core.rb
|
8
|
-
lib/boxgrinder-core/appliance-parser.rb
|
9
|
-
lib/boxgrinder-core/appliance-validator.rb
|
10
|
-
lib/boxgrinder-core/errors.rb
|
11
|
-
lib/boxgrinder-core/helpers/appliance-config-helper.rb
|
12
|
-
lib/boxgrinder-core/helpers/appliance-definition-helper.rb
|
13
|
-
lib/boxgrinder-core/helpers/appliance-transformation-helper.rb
|
14
|
-
lib/boxgrinder-core/helpers/exec-helper.rb
|
15
|
-
lib/boxgrinder-core/helpers/log-helper.rb
|
16
|
-
lib/boxgrinder-core/models/appliance-config.rb
|
17
|
-
lib/boxgrinder-core/models/config.rb
|
18
|
-
lib/boxgrinder-core/models/task.rb
|
19
|
-
lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml
|
20
|
-
lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml
|
21
|
-
lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml
|
22
|
-
rubygem-boxgrinder-core.spec
|
23
|
-
spec/appliance-parser-spec.rb
|
24
|
-
spec/appliance-validator-spec.rb
|
25
|
-
spec/helpers/appliance-config-helper-spec.rb
|
26
|
-
spec/helpers/appliance-definition-helper-spec.rb
|
27
|
-
spec/helpers/appliance-transformation-helper-spec.rb
|
28
|
-
spec/helpers/exec-helper-spec.rb
|
29
|
-
spec/helpers/log-helper-spec.rb
|
30
|
-
spec/models/appliance-config-spec.rb
|
31
|
-
spec/models/config-spec.rb
|
32
|
-
spec/rspec/ls/one
|
33
|
-
spec/rspec/ls/two
|
34
|
-
spec/rspec/src/appliances/0.8.x.appl
|
35
|
-
spec/rspec/src/appliances/0.9.x-invalid.appl
|
36
|
-
spec/rspec/src/appliances/0.9.x.appl
|
37
|
-
spec/rspec/src/appliances/comments.appl
|
38
|
-
spec/rspec/src/appliances/ephemeral-repo.appl
|
39
|
-
spec/rspec/src/appliances/full.appl
|
40
|
-
spec/rspec/src/appliances/invalid-yaml.appl
|
41
|
-
spec/rspec/src/appliances/legacy.appl
|
42
|
-
spec/rspec/src/appliances/repo.appl
|
43
|
-
spec/rspec/src/config/empty
|
44
|
-
spec/rspec/src/config/valid
|
data/boxgrinder-core.gemspec
CHANGED
@@ -1,25 +1,24 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
5
|
-
s.version = "0.3.
|
4
|
+
s.name = "boxgrinder-core"
|
5
|
+
s.version = "0.3.10"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Marek Goldmann"]
|
9
|
-
s.date =
|
10
|
-
s.description =
|
11
|
-
s.email =
|
9
|
+
s.date = "2011-12-19"
|
10
|
+
s.description = "Core library for BoxGrinder"
|
11
|
+
s.email = "info@boxgrinder.org"
|
12
12
|
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml"]
|
13
13
|
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/appliance-parser.rb", "lib/boxgrinder-core/appliance-validator.rb", "lib/boxgrinder-core/errors.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-definition-helper.rb", "lib/boxgrinder-core/helpers/appliance-transformation-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/schemas/appliance_schema_0.8.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.0.yaml", "lib/boxgrinder-core/schemas/appliance_schema_0.9.6.yaml", "rubygem-boxgrinder-core.spec", "spec/appliance-parser-spec.rb", "spec/appliance-validator-spec.rb", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-definition-helper-spec.rb", "spec/helpers/appliance-transformation-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/models/appliance-config-spec.rb", "spec/models/config-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/src/appliances/0.8.x.appl", "spec/rspec/src/appliances/0.9.x-invalid.appl", "spec/rspec/src/appliances/0.9.x.appl", "spec/rspec/src/appliances/comments.appl", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/invalid-yaml.appl", "spec/rspec/src/appliances/legacy.appl", "spec/rspec/src/appliances/repo.appl", "spec/rspec/src/config/empty", "spec/rspec/src/config/valid"]
|
14
|
-
s.homepage =
|
14
|
+
s.homepage = "http://boxgrinder.org"
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-core", "--main", "README"]
|
16
16
|
s.require_paths = ["lib"]
|
17
|
-
s.rubyforge_project =
|
18
|
-
s.rubygems_version =
|
19
|
-
s.summary =
|
17
|
+
s.rubyforge_project = "BoxGrinder"
|
18
|
+
s.rubygems_version = "1.8.11"
|
19
|
+
s.summary = "Core library for BoxGrinder"
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
22
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
22
|
s.specification_version = 3
|
24
23
|
|
25
24
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -22,6 +22,8 @@ require 'set'
|
|
22
22
|
module BoxGrinder
|
23
23
|
class ApplianceConfigHelper
|
24
24
|
|
25
|
+
VAR_SUBSTITUTION_MAX_DEPTH = 20
|
26
|
+
|
25
27
|
def initialize(appliance_configs)
|
26
28
|
@appliance_configs = appliance_configs.reverse
|
27
29
|
end
|
@@ -39,6 +41,7 @@ module BoxGrinder
|
|
39
41
|
merge_packages
|
40
42
|
merge_files
|
41
43
|
merge_post_operations
|
44
|
+
substitute_variables
|
42
45
|
|
43
46
|
@appliance_config
|
44
47
|
end
|
@@ -90,6 +93,33 @@ module BoxGrinder
|
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
96
|
+
# Get all leaf text values in the appliance definition, then substitute any
|
97
|
+
# variable values.
|
98
|
+
def substitute_variables
|
99
|
+
@appliance_config.all_values.each do |value|
|
100
|
+
substitute(value.clone, value, 0)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Replace variables with values. This will occur recursively upto a limited
|
105
|
+
# depth if the resolved values themselves contain variables.
|
106
|
+
def substitute(init, value, depth)
|
107
|
+
if depth > VAR_SUBSTITUTION_MAX_DEPTH
|
108
|
+
raise SystemStackError, "Maximal recursive depth (#{VAR_SUBSTITUTION_MAX_DEPTH})
|
109
|
+
reached for resolving variable #{init}, reached #{value} before stopping."
|
110
|
+
end
|
111
|
+
original = value.clone
|
112
|
+
value.gsub!(/(#(.*?)#)+?/) do
|
113
|
+
# 1. Match pre-defined variable, or variable defined in appliance definition.
|
114
|
+
next @appliance_config.variables[$2] if @appliance_config.variables.has_key?($2)
|
115
|
+
# 2. Match from environment variables.
|
116
|
+
next ENV[$2] unless ENV[$2].nil?
|
117
|
+
# 3. No match, replace the original string.
|
118
|
+
$1
|
119
|
+
end
|
120
|
+
substitute(init, value, depth+1) unless original == value
|
121
|
+
end
|
122
|
+
|
93
123
|
def merge_hardware
|
94
124
|
merge_cpus
|
95
125
|
merge_partitions
|
@@ -162,25 +192,12 @@ module BoxGrinder
|
|
162
192
|
@appliance_config.repos.clear
|
163
193
|
|
164
194
|
@appliance_configs.each do |appliance_config|
|
165
|
-
|
166
|
-
repo['name'] = substitute_vars(repo['name'])
|
167
|
-
['baseurl', 'mirrorlist'].each do |type|
|
168
|
-
repo[type] = substitute_vars(repo[type]) unless repo[type].nil?
|
169
|
-
end
|
170
|
-
|
195
|
+
appliance_config.repos.each do |repo|
|
171
196
|
@appliance_config.repos << repo
|
172
197
|
end
|
173
198
|
end
|
174
199
|
end
|
175
200
|
|
176
|
-
def substitute_vars(str)
|
177
|
-
return if str.nil?
|
178
|
-
@appliance_config.variables.keys.each do |var|
|
179
|
-
str = str.gsub("##{var}#", @appliance_config.variables[var])
|
180
|
-
end
|
181
|
-
str
|
182
|
-
end
|
183
|
-
|
184
201
|
def merge_packages
|
185
202
|
@appliance_config.packages.clear
|
186
203
|
|
@@ -202,7 +219,7 @@ module BoxGrinder
|
|
202
219
|
next if included.include?(appliance_config)
|
203
220
|
appliance_config.files.each do |dir, files|
|
204
221
|
@appliance_config.files[dir] = [] if @appliance_config.files[dir].nil?
|
205
|
-
files.each { |f| @appliance_config.files[dir] <<
|
222
|
+
files.each { |f| @appliance_config.files[dir] << f }
|
206
223
|
end
|
207
224
|
included << appliance_config
|
208
225
|
end
|
@@ -217,7 +234,7 @@ module BoxGrinder
|
|
217
234
|
next if included.include?(appliance_config)
|
218
235
|
appliance_config.post.each do |platform, cmds|
|
219
236
|
@appliance_config.post[platform] = [] if @appliance_config.post[platform].nil?
|
220
|
-
cmds.each { |cmd| @appliance_config.post[platform] <<
|
237
|
+
cmds.each { |cmd| @appliance_config.post[platform] << cmd }
|
221
238
|
end
|
222
239
|
included << appliance_config
|
223
240
|
end
|
@@ -94,6 +94,25 @@ module BoxGrinder
|
|
94
94
|
self
|
95
95
|
end
|
96
96
|
|
97
|
+
def all_values(input=nil)
|
98
|
+
avoid = ['@variables']
|
99
|
+
input = (self.instance_variables - avoid).
|
100
|
+
collect{ |v| self.instance_variable_get(v) } if input.nil?
|
101
|
+
|
102
|
+
vars = input.inject([]) do |arr, var|
|
103
|
+
case var
|
104
|
+
when Hash
|
105
|
+
arr.concat(all_values(var.values))
|
106
|
+
when Array
|
107
|
+
arr.concat(all_values(var))
|
108
|
+
when String
|
109
|
+
arr.push var
|
110
|
+
end
|
111
|
+
arr
|
112
|
+
end
|
113
|
+
vars
|
114
|
+
end
|
115
|
+
|
97
116
|
# Returns default filesystem type for current OS
|
98
117
|
def default_filesystem_type
|
99
118
|
fs = 'ext4'
|
@@ -60,7 +60,7 @@ mapping:
|
|
60
60
|
type: seq
|
61
61
|
sequence:
|
62
62
|
- type: str # Now allowing spaces due to group labels (these map to real groups with no spaces, but confuses users) https://issues.jboss.org/browse/BGBUILD-220
|
63
|
-
pattern: /^[
|
63
|
+
pattern: /^[\*\w\-+.@#\s]+$/ #fedora packaging standard http://bit.ly/h0JN9u (plus a few more, disallow symbols)
|
64
64
|
length: { min: 1 }
|
65
65
|
"excludes": *pkg
|
66
66
|
"default_repos":
|
@@ -57,7 +57,7 @@ mapping:
|
|
57
57
|
type: seq
|
58
58
|
sequence:
|
59
59
|
- type: str # Now allowing spaces due to group labels (these map to real groups with no spaces, but confuses users) https://issues.jboss.org/browse/BGBUILD-220
|
60
|
-
pattern: /^[
|
60
|
+
pattern: /^[\*\w\-+.@#\s]+$/ #fedora packaging standard http://bit.ly/h0JN9u (plus a few more, disallow symbols)
|
61
61
|
length: { min: 1 }
|
62
62
|
"default_repos":
|
63
63
|
type: bool
|
@@ -57,7 +57,7 @@ mapping:
|
|
57
57
|
type: seq
|
58
58
|
sequence:
|
59
59
|
- type: str # Now allowing spaces due to group labels (these map to real groups with no spaces, but confuses users) https://issues.jboss.org/browse/BGBUILD-220
|
60
|
-
pattern: /^[
|
60
|
+
pattern: /^[\*\w\-+.@#\s]+$/ #fedora packaging standard http://bit.ly/h0JN9u (plus a few more, disallow symbols)
|
61
61
|
length: { min: 1 }
|
62
62
|
"default_repos":
|
63
63
|
type: bool
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Summary: Core library for BoxGrinder
|
7
7
|
Name: rubygem-%{gemname}
|
8
|
-
Version: 0.3.
|
8
|
+
Version: 0.3.10
|
9
9
|
Release: 1%{?dist}
|
10
10
|
Group: Development/Languages
|
11
11
|
License: LGPLv3+
|
@@ -76,6 +76,12 @@ popd
|
|
76
76
|
%{gemdir}/doc/%{gemname}-%{version}
|
77
77
|
|
78
78
|
%changelog
|
79
|
+
* Thu Dec 1 2011 Marc Savy <mgoldman@redhat.com> - 0.3.10
|
80
|
+
- Upstream release: 0.3.10
|
81
|
+
- [BGBUILD-324] Add wildcard to packages schema
|
82
|
+
- [BGBUILD-320] Support variable substitution in any string value field of appliance definition
|
83
|
+
- [BGBUILD-327] Resolve appliance definition variables in ENV if they are not defined
|
84
|
+
|
79
85
|
* Fri Oct 14 2011 Marc Savy <msavy@redhat.com> - 0.3.9-1
|
80
86
|
- Upstream release: 0.3.9
|
81
87
|
- [BGBUILD-312] Discover which user to switch to after root dependent sections have been executed
|
@@ -405,6 +405,7 @@ module BoxGrinder
|
|
405
405
|
|
406
406
|
@helper.merge_variables
|
407
407
|
@helper.merge_repos
|
408
|
+
@helper.substitute_variables
|
408
409
|
|
409
410
|
config = @helper.instance_variable_get(:@appliance_config)
|
410
411
|
config.repos.size.should == 1
|
@@ -425,6 +426,7 @@ module BoxGrinder
|
|
425
426
|
|
426
427
|
@helper.merge_variables
|
427
428
|
@helper.merge_post_operations
|
429
|
+
@helper.substitute_variables
|
428
430
|
|
429
431
|
config = @helper.instance_variable_get(:@appliance_config)
|
430
432
|
config.post.size.should == 2
|
@@ -447,12 +449,82 @@ module BoxGrinder
|
|
447
449
|
|
448
450
|
@helper.merge_variables
|
449
451
|
@helper.merge_post_operations
|
452
|
+
@helper.substitute_variables
|
450
453
|
|
451
454
|
config = @helper.instance_variable_get(:@appliance_config)
|
452
455
|
config.post.size.should == 1
|
453
456
|
config.post['base'].should == [@arch, @base_arch, '12', 'fedora', 'AAA', 'BBB']
|
454
457
|
end
|
455
458
|
|
459
|
+
it "should allow variable substitution for any string value" do
|
460
|
+
config_a = ApplianceConfig.new
|
461
|
+
config_a.name = 'a'
|
462
|
+
config_a.os.name = "fedora-#CUSTOM_B#"
|
463
|
+
config_a.summary = "boxgrinder-#CUSTOM_A#"
|
464
|
+
config_a.os.version = '12'
|
465
|
+
config_a.variables['CUSTOM_A'] = "AAA"
|
466
|
+
config_a.variables['CUSTOM_B'] = "BBB"
|
467
|
+
config_a.init_arch
|
468
|
+
|
469
|
+
prepare_helper([config_a])
|
470
|
+
@helper.instance_variable_set(:@appliance_config, config_a.clone)
|
471
|
+
|
472
|
+
@helper.merge_variables
|
473
|
+
@helper.merge_post_operations
|
474
|
+
@helper.substitute_variables
|
475
|
+
|
476
|
+
config = @helper.instance_variable_get(:@appliance_config)
|
477
|
+
config.os.name.should == "fedora-BBB"
|
478
|
+
config.summary.should == "boxgrinder-AAA"
|
479
|
+
end
|
480
|
+
|
481
|
+
it "should allow recursive variable substitution" do
|
482
|
+
config_a = ApplianceConfig.new
|
483
|
+
config_a.name = 'a'
|
484
|
+
config_a.os.name = "fedora-#CUSTOM_B#"
|
485
|
+
config_a.summary = "boxgrinder-#CUSTOM_A#"
|
486
|
+
config_a.os.version = '#CUSTOM_A#'
|
487
|
+
config_a.variables['CUSTOM_A'] = "#CUSTOM_B#"
|
488
|
+
config_a.variables['CUSTOM_B'] = "ni-ni-ni"
|
489
|
+
config_a.post['base'] = ['#ARCH#', '#BASE_ARCH#', '#OS_VERSION#', '#OS_NAME#', '#CUSTOM_A#', '#CUSTOM_B#']
|
490
|
+
config_a.init_arch
|
491
|
+
|
492
|
+
prepare_helper([config_a])
|
493
|
+
@helper.instance_variable_set(:@appliance_config, config_a.clone)
|
494
|
+
|
495
|
+
@helper.merge_variables
|
496
|
+
@helper.merge_post_operations
|
497
|
+
@helper.substitute_variables
|
498
|
+
|
499
|
+
config = @helper.instance_variable_get(:@appliance_config)
|
500
|
+
config.os.name.should == "fedora-ni-ni-ni"
|
501
|
+
config.summary.should == "boxgrinder-ni-ni-ni"
|
502
|
+
config.post['base'].should == [@arch, @base_arch, 'ni-ni-ni', 'fedora-ni-ni-ni', 'ni-ni-ni', 'ni-ni-ni']
|
503
|
+
end
|
504
|
+
|
505
|
+
it "should fall back onto ENV if no variable is explicitly defined in the appliance" do
|
506
|
+
config_a = ApplianceConfig.new
|
507
|
+
config_a.name = 'a'
|
508
|
+
config_a.os.name = "fedora-#CUSTOM_B#"
|
509
|
+
config_a.os.version = '#CUSTOM_A#'
|
510
|
+
ENV['CUSTOM_A'] = 'shrubbery'
|
511
|
+
config_a.variables['CUSTOM_B'] = "ni-ni-ni"
|
512
|
+
config_a.post['base'] = ['#ARCH#', '#BASE_ARCH#', '#OS_VERSION#', '#OS_NAME#', '#CUSTOM_A#',
|
513
|
+
'#CUSTOM_B#', '#CUSTOM_A#-#NOT_DEF#', '#NOT_DEF#-#CUSTOM_A#', "##"]
|
514
|
+
config_a.init_arch
|
515
|
+
|
516
|
+
prepare_helper([config_a])
|
517
|
+
@helper.instance_variable_set(:@appliance_config, config_a.clone)
|
518
|
+
|
519
|
+
@helper.merge_variables
|
520
|
+
@helper.merge_post_operations
|
521
|
+
@helper.substitute_variables
|
522
|
+
|
523
|
+
config = @helper.instance_variable_get(:@appliance_config)
|
524
|
+
config.post['base'].should == [@arch, @base_arch, 'shrubbery', 'fedora-ni-ni-ni', 'shrubbery',
|
525
|
+
'ni-ni-ni', 'shrubbery-#NOT_DEF#', '#NOT_DEF#-shrubbery', '##']
|
526
|
+
end
|
527
|
+
|
456
528
|
describe ".merge_default_repos" do
|
457
529
|
it "should set default_repos option to true when not specified" do
|
458
530
|
config_a = ApplianceConfig.new
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxgrinder-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 10
|
10
|
+
version: 0.3.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marek Goldmann
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-12-19 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: hashery
|
@@ -136,7 +135,6 @@ files:
|
|
136
135
|
- spec/rspec/src/appliances/repo.appl
|
137
136
|
- spec/rspec/src/config/empty
|
138
137
|
- spec/rspec/src/config/valid
|
139
|
-
has_rdoc: true
|
140
138
|
homepage: http://boxgrinder.org
|
141
139
|
licenses: []
|
142
140
|
|
@@ -172,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
170
|
requirements: []
|
173
171
|
|
174
172
|
rubyforge_project: BoxGrinder
|
175
|
-
rubygems_version: 1.
|
173
|
+
rubygems_version: 1.8.11
|
176
174
|
signing_key:
|
177
175
|
specification_version: 3
|
178
176
|
summary: Core library for BoxGrinder
|