kameleon-builder 2.2.1 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rst +11 -2
- data/lib/kameleon.rb +2 -25
- data/lib/kameleon/cli.rb +14 -3
- data/lib/kameleon/environment.rb +3 -5
- data/lib/kameleon/recipe.rb +7 -8
- data/version.txt +1 -1
- metadata +19 -11
- checksums.yaml +0 -7
data/CHANGELOG.rst
CHANGED
@@ -1,13 +1,22 @@
|
|
1
1
|
Kameleon CHANGELOG
|
2
2
|
==================
|
3
3
|
|
4
|
+
version 2.2.2
|
5
|
+
-------------
|
6
|
+
|
7
|
+
Released on July 23rd 2014
|
8
|
+
|
9
|
+
- [core] Added ``-h`` CLI option to print help
|
10
|
+
- [core] Added ``--templates-path`` CLI option to set different templates directory
|
11
|
+
- [core] Fixed regression about recipe ancestors loading
|
12
|
+
|
4
13
|
version 2.2.1
|
5
14
|
-------------
|
6
15
|
|
7
|
-
Released on July
|
16
|
+
Released on July 22nd 2014
|
8
17
|
|
9
18
|
- [core] Switch to default yaml parser (psych) and removed syck from dependencies
|
10
|
-
|
19
|
+
- [core] Loaded a recipe with all ancestors
|
11
20
|
|
12
21
|
version 2.2.0
|
13
22
|
-------------
|
data/lib/kameleon.rb
CHANGED
@@ -15,9 +15,6 @@ module Kameleon
|
|
15
15
|
attr_writer :env
|
16
16
|
attr_writer :ui
|
17
17
|
attr_writer :source_root
|
18
|
-
attr_writer :templates_path
|
19
|
-
attr_writer :templates_names
|
20
|
-
attr_writer :templates_files
|
21
18
|
attr_writer :log_on_progress
|
22
19
|
|
23
20
|
# The source root is the path to the root directory of the kameleon gem.
|
@@ -25,28 +22,8 @@ module Kameleon
|
|
25
22
|
@source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
26
23
|
end
|
27
24
|
|
28
|
-
def
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
def templates_files
|
33
|
-
if @templates.nil?
|
34
|
-
files = Dir.foreach(templates_path).map do |f|
|
35
|
-
Pathname.new(File.join(templates_path, f)) if f.include?(".yaml")
|
36
|
-
end
|
37
|
-
@templates = files.compact
|
38
|
-
end
|
39
|
-
@templates
|
40
|
-
end
|
41
|
-
|
42
|
-
def templates_names
|
43
|
-
if @templates_names.nil?
|
44
|
-
names = templates_files.map do |f|
|
45
|
-
f.basename(f.extname).to_s
|
46
|
-
end
|
47
|
-
@templates_names = names
|
48
|
-
end
|
49
|
-
@templates_names
|
25
|
+
def default_templates_path
|
26
|
+
File.join(Kameleon.source_root, 'templates')
|
50
27
|
end
|
51
28
|
|
52
29
|
def env
|
data/lib/kameleon/cli.rb
CHANGED
@@ -16,6 +16,9 @@ module Kameleon
|
|
16
16
|
map %w(-h --help) => :help
|
17
17
|
|
18
18
|
desc "import [TEMPLATE_NAME]", "Imports the given template"
|
19
|
+
method_option :templates_path, :type => :string ,
|
20
|
+
:default => Kameleon.default_templates_path, :aliases => "-t",
|
21
|
+
:desc => "Using another templates directory"
|
19
22
|
def import(template_name)
|
20
23
|
templates_path = Kameleon.env.templates_path
|
21
24
|
template_path = File.join(templates_path, template_name) + '.yaml'
|
@@ -36,6 +39,9 @@ module Kameleon
|
|
36
39
|
end
|
37
40
|
|
38
41
|
desc "new [RECIPE_NAME] [TEMPLATE_NAME]", "Creates a new recipe"
|
42
|
+
method_option :templates_path, :type => :string ,
|
43
|
+
:default => Kameleon.default_templates_path, :aliases => "-t",
|
44
|
+
:desc => "Using another templates directory"
|
39
45
|
def new(recipe_name, template_name)
|
40
46
|
if recipe_name == template_name
|
41
47
|
fail RecipeError, "Recipe name should be different from template name"
|
@@ -59,7 +65,7 @@ module Kameleon
|
|
59
65
|
recipe_path = File.join(tmp_dir, recipe_name + '.yaml')
|
60
66
|
## copying recipe
|
61
67
|
File.open(recipe_path, 'w+') do |file|
|
62
|
-
extend_erb_tpl = File.join(Kameleon.
|
68
|
+
extend_erb_tpl = File.join(Kameleon.default_templates_path, "extend.erb")
|
63
69
|
erb = ERB.new(File.open(extend_erb_tpl, 'rb') { |f| f.read })
|
64
70
|
result = erb.result(binding)
|
65
71
|
file.write(result)
|
@@ -71,9 +77,12 @@ module Kameleon
|
|
71
77
|
end
|
72
78
|
|
73
79
|
desc "templates", "Lists all defined templates"
|
80
|
+
method_option :templates_path, :type => :string ,
|
81
|
+
:default => Kameleon.default_templates_path, :aliases => "-t",
|
82
|
+
:desc => "Using another templates directory"
|
74
83
|
def templates
|
75
84
|
puts "The following templates are available in " \
|
76
|
-
"#{ Kameleon.templates_path }:"
|
85
|
+
"#{ Kameleon.env.templates_path }:"
|
77
86
|
templates_hash = []
|
78
87
|
templates_path = File.join(Kameleon.env.templates_path, "/")
|
79
88
|
all_yaml_files = Dir["#{templates_path}**/*.yaml"]
|
@@ -90,9 +99,11 @@ module Kameleon
|
|
90
99
|
raise e if Kameleon.env.debug
|
91
100
|
end
|
92
101
|
end
|
102
|
+
unless templates_hash.empty?
|
93
103
|
templates_hash = templates_hash.sort_by{ |k| k["name"] }
|
94
104
|
name_width = templates_hash.map { |k| k['name'].size }.max
|
95
105
|
desc_width = Kameleon.ui.shell.terminal_width - name_width - 3
|
106
|
+
end
|
96
107
|
tp(templates_hash,
|
97
108
|
{"name" => {:width => name_width}},
|
98
109
|
{ "description" => {:width => desc_width}})
|
@@ -195,7 +206,7 @@ module Kameleon
|
|
195
206
|
Kameleon.ui.level = "debug" if self.options["debug"]
|
196
207
|
opts = args[1]
|
197
208
|
cmd_name = args[2][:current_command].name
|
198
|
-
if opts.include? "--help"
|
209
|
+
if opts.include? "--help" or opts.include? "-h"
|
199
210
|
CLI.command_help(Kameleon.ui.shell, cmd_name)
|
200
211
|
raise Kameleon::Exit
|
201
212
|
end
|
data/lib/kameleon/environment.rb
CHANGED
@@ -18,17 +18,15 @@ module Kameleon
|
|
18
18
|
# symbolify commandline options
|
19
19
|
options = options.inject({}) {|result,(key,value)| result.update({key.to_sym => value})}
|
20
20
|
workspace = File.expand_path(Dir.pwd)
|
21
|
+
templates_path = File.expand_path(options[:templates_path] || Kameleon.default_templates_path)
|
21
22
|
build_path = File.expand_path(options[:build_path] || File.join(workspace, "build"))
|
22
23
|
cache_path = File.expand_path(options[:cache_path] || File.join(build_path, "cache"))
|
23
|
-
|
24
|
+
options = {
|
24
25
|
:workspace => Pathname.new(workspace),
|
25
|
-
:templates_path =>
|
26
|
-
:templates_names => Kameleon.templates_names,
|
26
|
+
:templates_path => Pathname.new(templates_path),
|
27
27
|
:build_path => Pathname.new(build_path),
|
28
28
|
:cache_path => Pathname.new(cache_path),
|
29
|
-
:script => options[:script],
|
30
29
|
}
|
31
|
-
options = defaults.merge(options)
|
32
30
|
Kameleon.ui.debug("Environment initialized (#{self})")
|
33
31
|
# Injecting all variables of the options and assign the variables
|
34
32
|
options.each do |key, value|
|
data/lib/kameleon/recipe.rb
CHANGED
@@ -46,8 +46,12 @@ module Kameleon
|
|
46
46
|
Kameleon.ui.debug("Loading #{@path}")
|
47
47
|
fail RecipeError, "Could not find this following recipe : #{@path}" \
|
48
48
|
unless File.file? @path
|
49
|
+
yaml_recipe = YAML.load_file @path
|
50
|
+
unless yaml_recipe.kind_of? Hash
|
51
|
+
fail RecipeError, "Invalid yaml error"
|
52
|
+
end
|
49
53
|
# Load entended recipe variables
|
50
|
-
yaml_recipe = load_base_recipe(@path)
|
54
|
+
yaml_recipe = load_base_recipe(yaml_recipe, @path)
|
51
55
|
yaml_recipe.delete("extend")
|
52
56
|
|
53
57
|
# Load Global variables
|
@@ -137,12 +141,7 @@ module Kameleon
|
|
137
141
|
}
|
138
142
|
end
|
139
143
|
|
140
|
-
def load_base_recipe(path)
|
141
|
-
yaml_recipe = YAML.load_file path
|
142
|
-
|
143
|
-
unless yaml_recipe.kind_of? Hash
|
144
|
-
fail RecipeError, "Invalid yaml error, #{path}"
|
145
|
-
end
|
144
|
+
def load_base_recipe(yaml_recipe, path)
|
146
145
|
base_recipe_name = yaml_recipe.fetch("extend", "")
|
147
146
|
return yaml_recipe if base_recipe_name.empty?
|
148
147
|
|
@@ -188,7 +187,7 @@ module Kameleon
|
|
188
187
|
end
|
189
188
|
end
|
190
189
|
@base_recipes_files.push(Pathname.new(base_recipe_path))
|
191
|
-
return load_base_recipe(base_recipe_path)
|
190
|
+
return load_base_recipe(base_yaml_recipe, base_recipe_path)
|
192
191
|
end
|
193
192
|
|
194
193
|
def load_aliases(yaml_recipe)
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.2.
|
1
|
+
2.2.2
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kameleon-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Salem Harrache
|
@@ -11,51 +12,56 @@ authors:
|
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2014-07-
|
15
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: childprocess
|
18
19
|
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
19
21
|
requirements:
|
20
22
|
- - ~>
|
21
23
|
- !ruby/object:Gem::Version
|
22
24
|
version: 0.5.3
|
23
|
-
- - '>='
|
25
|
+
- - ! '>='
|
24
26
|
- !ruby/object:Gem::Version
|
25
27
|
version: 0.3.0
|
26
28
|
type: :runtime
|
27
29
|
prerelease: false
|
28
30
|
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
29
32
|
requirements:
|
30
33
|
- - ~>
|
31
34
|
- !ruby/object:Gem::Version
|
32
35
|
version: 0.5.3
|
33
|
-
- - '>='
|
36
|
+
- - ! '>='
|
34
37
|
- !ruby/object:Gem::Version
|
35
38
|
version: 0.3.0
|
36
39
|
- !ruby/object:Gem::Dependency
|
37
40
|
name: thor
|
38
41
|
requirement: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
39
43
|
requirements:
|
40
44
|
- - ~>
|
41
45
|
- !ruby/object:Gem::Version
|
42
46
|
version: '0.19'
|
43
|
-
- - '>='
|
47
|
+
- - ! '>='
|
44
48
|
- !ruby/object:Gem::Version
|
45
49
|
version: 0.15.0
|
46
50
|
type: :runtime
|
47
51
|
prerelease: false
|
48
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
49
54
|
requirements:
|
50
55
|
- - ~>
|
51
56
|
- !ruby/object:Gem::Version
|
52
57
|
version: '0.19'
|
53
|
-
- - '>='
|
58
|
+
- - ! '>='
|
54
59
|
- !ruby/object:Gem::Version
|
55
60
|
version: 0.15.0
|
56
61
|
- !ruby/object:Gem::Dependency
|
57
62
|
name: table_print
|
58
63
|
requirement: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
59
65
|
requirements:
|
60
66
|
- - ~>
|
61
67
|
- !ruby/object:Gem::Version
|
@@ -63,6 +69,7 @@ dependencies:
|
|
63
69
|
type: :runtime
|
64
70
|
prerelease: false
|
65
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
66
73
|
requirements:
|
67
74
|
- - ~>
|
68
75
|
- !ruby/object:Gem::Version
|
@@ -261,26 +268,27 @@ files:
|
|
261
268
|
homepage: http://kameleon.readthedocs.org/
|
262
269
|
licenses:
|
263
270
|
- GPL-2
|
264
|
-
metadata: {}
|
265
271
|
post_install_message:
|
266
272
|
rdoc_options: []
|
267
273
|
require_paths:
|
268
274
|
- lib
|
269
275
|
required_ruby_version: !ruby/object:Gem::Requirement
|
276
|
+
none: false
|
270
277
|
requirements:
|
271
|
-
- - '>='
|
278
|
+
- - ! '>='
|
272
279
|
- !ruby/object:Gem::Version
|
273
280
|
version: '0'
|
274
281
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
282
|
+
none: false
|
275
283
|
requirements:
|
276
|
-
- - '>='
|
284
|
+
- - ! '>='
|
277
285
|
- !ruby/object:Gem::Version
|
278
286
|
version: '0'
|
279
287
|
requirements: []
|
280
288
|
rubyforge_project:
|
281
|
-
rubygems_version:
|
289
|
+
rubygems_version: 1.8.23
|
282
290
|
signing_key:
|
283
|
-
specification_version:
|
291
|
+
specification_version: 3
|
284
292
|
summary: Kameleon is a tool to build virtual machines from scratch
|
285
293
|
test_files:
|
286
294
|
- tests/helper.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 1eeb84f0518b9bf6cd2f84f448e0abf99b3384e6
|
4
|
-
data.tar.gz: 1cae83863b12c6fb9ffab9f435c6d8bce27c456a
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 318367937e2f8525195ec158b0217c901ffa95b4c87e5711867e40aad830cec076be5380d94167c2f59a692e3efd355e4f635c328ec1283fa2ed8df22be78c92
|
7
|
-
data.tar.gz: 81e853c7b87824f8d8bccfe5f7bd1ec0e8783e13a4a8a493f2f8ebfb3cdf836b2f26a72651e911705dbbebba8c9212e708aae32c73df9b9ae5927afd7a6f3110
|