kameleon-builder 2.9.1 → 2.9.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.
- checksums.yaml +4 -4
- data/.bumpversion.cfg +1 -1
- data/CHANGES +10 -0
- data/lib/kameleon/engine.rb +12 -2
- data/lib/kameleon/recipe.rb +36 -28
- data/lib/kameleon/step.rb +12 -1
- data/version.txt +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d7458a3fde25cc58852865df6aa62bd43b03dc4
|
4
|
+
data.tar.gz: 20f4f7320bb696713b64e3894c202a1f7386a181
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dd429c6424f1484c1b2fff7f124e2a2a0d6b6a8e7e546b9101eba8a5f5809587007a33395ad73125bd45830edbf03e18a0ed31e482ddda5025f7b582051edb7
|
7
|
+
data.tar.gz: 4be4b3d61a51e0b0959a2b17777d1891b34a9da08a60e6e532cf36360efbd85e99a8f4a9aedb5d27986f19dad0df3e676c78635c92db4435f68e65b003b7272a
|
data/.bumpversion.cfg
CHANGED
data/CHANGES
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
Kameleon CHANGELOG
|
2
2
|
==================
|
3
3
|
|
4
|
+
Version 2.9.2
|
5
|
+
-------------
|
6
|
+
|
7
|
+
Released on February 21st 2018
|
8
|
+
|
9
|
+
- Enforce the number of sub commands for the rescue and test commands
|
10
|
+
- Support nested aliases
|
11
|
+
|
4
12
|
Version 2.9.1
|
5
13
|
-------------
|
6
14
|
|
15
|
+
Released on January 28st 2018
|
16
|
+
|
7
17
|
- Make the test and group command work in the cleaning steps.
|
8
18
|
|
9
19
|
Version 2.9.0
|
data/lib/kameleon/engine.rb
CHANGED
@@ -298,6 +298,10 @@ module Kameleon
|
|
298
298
|
first_context.pipe(first_cmd.value, second_cmd.value, second_context, kwargs)
|
299
299
|
end
|
300
300
|
when "rescue"
|
301
|
+
unless cmd.value.length == 2
|
302
|
+
Kameleon.ui.error("Invalid 'rescue' command arguments. Expecting 2 sub commands")
|
303
|
+
fail ExecError
|
304
|
+
end
|
301
305
|
first_cmd, second_cmd = cmd.value
|
302
306
|
begin
|
303
307
|
exec_cmd(first_cmd, kwargs)
|
@@ -305,6 +309,10 @@ module Kameleon
|
|
305
309
|
safe_exec_cmd(second_cmd, kwargs)
|
306
310
|
end
|
307
311
|
when "test"
|
312
|
+
unless cmd.value.length == 2 or cmd.value.length == 3
|
313
|
+
Kameleon.ui.error("Invalid 'test' command arguments. Expecting 2 or 3 sub commands")
|
314
|
+
fail ExecError
|
315
|
+
end
|
308
316
|
first_cmd, second_cmd, third_cmd = cmd.value
|
309
317
|
begin
|
310
318
|
Kameleon.ui.debug("Execute test condition")
|
@@ -313,8 +321,10 @@ module Kameleon
|
|
313
321
|
# be executed rather than the "then" statement.
|
314
322
|
exec_cmd(first_cmd, kwargs.reject {|k| k == :only_with_context})
|
315
323
|
rescue ExecError
|
316
|
-
|
317
|
-
|
324
|
+
unless third_cmd.nil?
|
325
|
+
Kameleon.ui.debug("Execute test 'else' statment'")
|
326
|
+
exec_cmd(third_cmd, kwargs)
|
327
|
+
end
|
318
328
|
else
|
319
329
|
Kameleon.ui.debug("Execute test 'then' statment'")
|
320
330
|
exec_cmd(second_cmd, kwargs)
|
data/lib/kameleon/recipe.rb
CHANGED
@@ -546,20 +546,18 @@ module Kameleon
|
|
546
546
|
consistency_check
|
547
547
|
resolve_checkpoint unless @checkpoint.nil?
|
548
548
|
|
549
|
-
Kameleon.ui.verbose("Resolving
|
549
|
+
Kameleon.ui.verbose("Resolving aliases")
|
550
550
|
@sections.values.each do |section|
|
551
551
|
section.macrosteps.each do |macrostep|
|
552
552
|
# First pass : resolve aliases
|
553
553
|
Kameleon.ui.debug("Resolving aliases for macrostep '#{macrostep.name}'")
|
554
554
|
macrostep.microsteps.each do |microstep|
|
555
555
|
microstep.commands.map! do |cmd|
|
556
|
-
|
557
|
-
@aliases.keys.include?(cmd.key) ? resolve_alias(cmd) : cmd
|
556
|
+
resolve_alias(cmd)
|
558
557
|
end
|
558
|
+
# flatten for multiple-command alias + variables
|
559
|
+
microstep.commands.flatten!
|
559
560
|
end
|
560
|
-
# flatten for multiple-command alias + variables
|
561
|
-
Kameleon.ui.debug("Resolving check statements for macrostep '#{macrostep.name}'")
|
562
|
-
macrostep.microsteps.each { |microstep| microstep.commands.flatten! }
|
563
561
|
end
|
564
562
|
end
|
565
563
|
|
@@ -641,26 +639,36 @@ module Kameleon
|
|
641
639
|
|
642
640
|
def resolve_alias(cmd)
|
643
641
|
name = cmd.key
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
642
|
+
if @aliases.keys.include?(name)
|
643
|
+
Kameleon.ui.debug("Resolving alias '#{name}'")
|
644
|
+
aliases_cmd = @aliases.fetch(name).clone
|
645
|
+
aliases_cmd_str = aliases_cmd.to_yaml
|
646
|
+
args = YAML.load(cmd.string_cmd)[name]
|
647
|
+
args = [].push(args).flatten # convert args to array
|
648
|
+
expected_args_number = aliases_cmd_str.scan(/@\d+/).uniq.count
|
649
|
+
if expected_args_number != args.count
|
650
|
+
if args.length == 0
|
651
|
+
msg = "#{name} takes no arguments (#{args.count} given)"
|
652
|
+
else
|
653
|
+
msg = "#{name} takes exactly #{expected_args_number} arguments"
|
654
|
+
" (#{args.count} given)"
|
655
|
+
end
|
656
|
+
raise RecipeError, msg
|
655
657
|
end
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
658
|
+
aliases_cmd.map do |c|
|
659
|
+
nc = Command.new(c, cmd.microstep_name)
|
660
|
+
args.each_with_index do |arg, i|
|
661
|
+
nc.gsub!("@#{i+1}", arg)
|
662
|
+
end
|
663
|
+
resolve_alias(nc)
|
664
|
+
end
|
665
|
+
elsif cmd.value.kind_of?(Array)
|
666
|
+
Kameleon.ui.debug("Search for aliases in the sub-commands of '#{name}'")
|
667
|
+
cmd.value.map!{ |cmd| resolve_alias(cmd) }.flatten!
|
668
|
+
cmd.remaster_string_cmd_from_value!
|
669
|
+
else
|
670
|
+
Kameleon.ui.debug("Leaf command '#{name}' is not an alias")
|
671
|
+
cmd
|
664
672
|
end
|
665
673
|
end
|
666
674
|
|
@@ -669,10 +677,10 @@ module Kameleon
|
|
669
677
|
if (cmd.key =~ /on_(.*)clean/ || cmd.key =~ /on_(.*)init/)
|
670
678
|
cmds = []
|
671
679
|
if cmd.value.kind_of?(Array)
|
672
|
-
cmds = cmd.value.map do |
|
673
|
-
|
680
|
+
cmds = cmd.value.map do |cmd|
|
681
|
+
resolve_alias(cmd)
|
674
682
|
end
|
675
|
-
cmds
|
683
|
+
cmds.flatten!
|
676
684
|
else
|
677
685
|
fail RecipeError, "Invalid #{cmd.key} arguments"
|
678
686
|
end
|
data/lib/kameleon/step.rb
CHANGED
@@ -73,13 +73,24 @@ module Kameleon
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
def string_cmd=(str)
|
77
|
+
Kameleon.ui.debug("Set string_cmd to '#{str}' and clear cached value")
|
78
|
+
@string_cmd = str
|
79
|
+
@value = nil
|
80
|
+
end
|
81
|
+
|
82
|
+
def remaster_string_cmd_from_value!
|
83
|
+
self.string_cmd = YAML.dump(to_array).gsub("---", "").strip
|
84
|
+
return self
|
85
|
+
end
|
86
|
+
|
76
87
|
def gsub!(arg1, arg2)
|
77
88
|
if value.kind_of? Array
|
78
89
|
value.each { |cmd| cmd.gsub!(arg1, arg2) }
|
79
90
|
else
|
80
91
|
@value.gsub!(arg1, arg2)
|
81
92
|
end
|
82
|
-
|
93
|
+
remaster_string_cmd_from_value!
|
83
94
|
return self
|
84
95
|
end
|
85
96
|
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.9.
|
1
|
+
2.9.2
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kameleon-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.9.
|
4
|
+
version: 2.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salem Harrache
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2018-
|
15
|
+
date: 2018-02-21 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: childprocess
|