kameleon-builder 2.10.3 → 2.10.4
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 +11 -0
- data/completion/kameleon.bash +2 -2
- data/erb/userconf.yaml.erb +1 -0
- data/kameleon-builder.gemspec +3 -3
- data/lib/kameleon.rb +2 -1
- data/lib/kameleon/cli.rb +48 -36
- data/version.txt +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6efa8300acf90e4c5889f75b3682ff4e2d7e27cedfd1bb4d1856aa45b4c474d4
|
4
|
+
data.tar.gz: 9307cd1aecbd38b8e81b20ef4b6234c246e1eefb0960d316989c56959576fbef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9e8fe682ad005bcf49d8845658251b53b626da2759822ee59162372db962fc79e574685e615330dc6d437864477379984a1821953d57cdae9958553b1c2dfd0
|
7
|
+
data.tar.gz: 376ff16804dd6a321401463f37612140d9b9b493e143db623586cb15830817d92095c8809b6c140f47095bab18401cc2e1fa5e50323a6392e61feeb8b83f4e65
|
data/.bumpversion.cfg
CHANGED
data/CHANGES
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
Kameleon CHANGELOG
|
2
2
|
==================
|
3
3
|
|
4
|
+
Version 2.10.4
|
5
|
+
--------------
|
6
|
+
|
7
|
+
Released on May 11th 2020
|
8
|
+
|
9
|
+
- Fix support for extend ERB
|
10
|
+
- Add the `kameleon template erb` command
|
11
|
+
- Fix bash completion
|
12
|
+
- Cosmetic code fixes
|
13
|
+
|
4
14
|
Version 2.10.3
|
5
15
|
--------------
|
6
16
|
|
@@ -15,6 +25,7 @@ Version 2.10.2
|
|
15
25
|
--------------
|
16
26
|
|
17
27
|
Released on April 09th 2020
|
28
|
+
|
18
29
|
- Fix cli help for the repository and template sub-commands
|
19
30
|
- Add the git remote url and branch to kameleon repo list
|
20
31
|
- Add the 'kameleon repository remove' command
|
data/completion/kameleon.bash
CHANGED
@@ -14,8 +14,8 @@ _kameleon() {
|
|
14
14
|
((i++))
|
15
15
|
done
|
16
16
|
if [ "$COMP_CWORD" -eq $((i+1)) ] && kameleon commands | grep -q "${COMP_WORDS[$i]}" ; then
|
17
|
-
if
|
18
|
-
local commands="$(compgen -W "$
|
17
|
+
if kameleon help | grep -qe "^ kameleon ${COMP_WORDS[$i]}[a-z]* <SUBCOMMAND>"; then
|
18
|
+
local commands="$(compgen -W "$(kameleon ${COMP_WORDS[$i]} commands)" -- "${COMP_WORDS[$((i+1))]}")"
|
19
19
|
COMPREPLY=( $commands $projects )
|
20
20
|
fi
|
21
21
|
fi
|
data/erb/userconf.yaml.erb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
---
|
2
2
|
repositories_path: <%= Kameleon.default_values[:repositories_path] %>
|
3
|
+
extend_yaml_erb: <%= Kameleon.default_values[:extend_yaml_erb] %>
|
3
4
|
script: <%= Kameleon.default_values[:script] %>
|
4
5
|
color: <%= Kameleon.default_values[:color] %>
|
5
6
|
debug: <%= Kameleon.default_values[:debug] %>
|
data/kameleon-builder.gemspec
CHANGED
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
|
|
12
12
|
'Cristan Ruiz',
|
13
13
|
'Pierre Neyron',
|
14
14
|
'Bruno Bzeznik']
|
15
|
-
s.email = ['salem
|
16
|
-
'michael.mercier@
|
17
|
-
'
|
15
|
+
s.email = ['salem@harrache.info',
|
16
|
+
'michael.mercier@libr.fr',
|
17
|
+
'camilo1729@gmail.com',
|
18
18
|
'pierre.neyron@imag.fr',
|
19
19
|
'bruno.bzeznik@imag.fr']
|
20
20
|
s.description = %q{The mindful appliance builder}
|
data/lib/kameleon.rb
CHANGED
@@ -73,7 +73,8 @@ module Kameleon
|
|
73
73
|
:debug => userconf.fetch("debug", false),
|
74
74
|
:script => userconf.fetch("script", false),
|
75
75
|
:repositories_path => userconf.fetch("repositories_path",
|
76
|
-
|
76
|
+
File.join(userdir.to_s, 'repos')),
|
77
|
+
:extend_yaml_erb => userconf.fetch("extend_yaml_erb", ".extend.yaml.erb")
|
77
78
|
}
|
78
79
|
end
|
79
80
|
|
data/lib/kameleon/cli.rb
CHANGED
@@ -12,7 +12,7 @@ module Kameleon
|
|
12
12
|
include Thor::Actions
|
13
13
|
|
14
14
|
desc "add <NAME> <GIT_URL>", "Adds a new repository named <NAME> cloned from <GIT_URL>."
|
15
|
-
method_option :branch, :type => :string
|
15
|
+
method_option :branch, :type => :string,
|
16
16
|
:default => nil,
|
17
17
|
:desc => "checkout <BRANCH>",
|
18
18
|
:aliases => "-b"
|
@@ -67,7 +67,7 @@ module Kameleon
|
|
67
67
|
end
|
68
68
|
|
69
69
|
desc "import <TEMPLATE_NAME>", "Imports the given template"
|
70
|
-
method_option :global, :type => :hash
|
70
|
+
method_option :global, :type => :hash,
|
71
71
|
:default => {}, :aliases => "-g",
|
72
72
|
:desc => "Set custom global variables."
|
73
73
|
def import(template_name)
|
@@ -98,7 +98,7 @@ module Kameleon
|
|
98
98
|
end
|
99
99
|
|
100
100
|
desc "info <TEMPLATE_NAME>", "Display detailed information about a template"
|
101
|
-
method_option :global, :type => :hash
|
101
|
+
method_option :global, :type => :hash,
|
102
102
|
:default => {}, :aliases => "-g",
|
103
103
|
:desc => "Set custom global variables."
|
104
104
|
def info(template_name)
|
@@ -116,6 +116,19 @@ module Kameleon
|
|
116
116
|
tpl.display_info(false)
|
117
117
|
end
|
118
118
|
|
119
|
+
desc "erb <PATH>", "Create a extend recipe ERB file"
|
120
|
+
def erb(path)
|
121
|
+
if File.directory?(path)
|
122
|
+
erb_file = Pathname.new(path).join(Kameleon.default_values[:extend_yaml_erb])
|
123
|
+
elsif File.file?(path) and path.end_with?(".yaml")
|
124
|
+
erb_file = Pathname.new(path.gsub(%r{^(.+?/)?([^/]+?)(\.yaml)?$},'\1.\2') + Kameleon.default_values[:extend_yaml_erb])
|
125
|
+
else
|
126
|
+
fail KameleonError, "Invalid path '#{path}', please give a path to a yaml file or a directory"
|
127
|
+
end
|
128
|
+
Kameleon.ui.verbose("Create extend recipe ERB '#{erb_file}'")
|
129
|
+
copy_file(Pathname.new(Kameleon.erb_dirpath).join("extend.yaml.erb"), erb_file)
|
130
|
+
end
|
131
|
+
|
119
132
|
desc "commands", "Lists all available commands", :hide => true
|
120
133
|
def commands
|
121
134
|
puts Template.all_commands.keys - ["commands"]
|
@@ -164,7 +177,7 @@ module Kameleon
|
|
164
177
|
end
|
165
178
|
|
166
179
|
desc "new <RECIPE_PATH> <TEMPLATE_NAME>", "Creates a new recipe from template <TEMPLATE_NAME>"
|
167
|
-
method_option :global, :type => :hash
|
180
|
+
method_option :global, :type => :hash,
|
168
181
|
:default => {}, :aliases => "-g",
|
169
182
|
:desc => "Set custom global variables."
|
170
183
|
def new(recipe_name, template_name)
|
@@ -204,20 +217,19 @@ module Kameleon
|
|
204
217
|
recipe_temp = File.join(tmp_dir, File.basename(recipe_path))
|
205
218
|
## copying recipe
|
206
219
|
File.open(recipe_temp, 'w+') do |file|
|
207
|
-
message="
|
208
|
-
|
209
|
-
Kameleon.env.repositories_path.join(
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
].flatten.find do |f|
|
220
|
+
message="Try and use extend recipe ERB: "
|
221
|
+
extend_yaml_erb_list = Pathname.new(template_name).dirname.ascend.to_a.map do |p|
|
222
|
+
Kameleon.env.repositories_path.join(p, Kameleon.default_values[:extend_yaml_erb])
|
223
|
+
end
|
224
|
+
extend_yaml_erb_list.unshift(Kameleon.env.repositories_path.join(template_name.gsub(%r{^(.+?/)?([^/]+?)(\.yaml)?$},'\1.\2') + Kameleon.default_values[:extend_yaml_erb]))
|
225
|
+
extend_yaml_erb_list.push(Pathname.new(Kameleon.erb_dirpath).join("extend.yaml.erb"))
|
226
|
+
extend_yaml_erb = extend_yaml_erb_list.find do |f|
|
215
227
|
Kameleon.ui.verbose(message + f.to_s)
|
216
228
|
message = "-> Not found, fallback: "
|
217
229
|
File.readable?(f)
|
218
230
|
end
|
219
|
-
|
220
|
-
result =
|
231
|
+
Kameleon.ui.debug("Open ERB file: '#{extend_yaml_erb}'")
|
232
|
+
result = ERB.new(File.open(extend_yaml_erb, 'rb') { |f| f.read }).result(binding)
|
221
233
|
file.write(result)
|
222
234
|
end
|
223
235
|
copy_file(recipe_temp, recipe_path)
|
@@ -226,13 +238,13 @@ module Kameleon
|
|
226
238
|
end
|
227
239
|
|
228
240
|
desc "info <RECIPE_PATH>", "Display detailed information about a recipe"
|
229
|
-
method_option :global, :type => :hash
|
241
|
+
method_option :global, :type => :hash,
|
230
242
|
:default => {}, :aliases => "-g",
|
231
243
|
:desc => "Set custom global variables."
|
232
|
-
method_option :from_cache, :type => :string
|
244
|
+
method_option :from_cache, :type => :string,
|
233
245
|
:default => nil,
|
234
246
|
:desc => "Get info from a persistent cache tar file (ignore recipe path)"
|
235
|
-
method_option :relative, :type => :boolean
|
247
|
+
method_option :relative, :type => :boolean,
|
236
248
|
:default => false,
|
237
249
|
:desc => "Make pathnames relative to the current working directory"
|
238
250
|
def info(*recipe_paths)
|
@@ -258,18 +270,18 @@ module Kameleon
|
|
258
270
|
end
|
259
271
|
|
260
272
|
desc "dag <RECIPE_PATH> [<RECIPE_PATH> [<...>]]", "Draw a DAG of the steps to build one or more recipes"
|
261
|
-
method_option :global, :type => :hash
|
273
|
+
method_option :global, :type => :hash,
|
262
274
|
:default => {}, :aliases => "-g",
|
263
275
|
:desc => "Set custom global variables."
|
264
|
-
method_option :file, :type => :string
|
276
|
+
method_option :file, :type => :string,
|
265
277
|
:default => "/tmp/kameleon.dag",
|
266
278
|
:desc => "DAG output filename"
|
267
|
-
method_option :format, :type => :string
|
279
|
+
method_option :format, :type => :string,
|
268
280
|
:desc => "DAG GraphViz format"
|
269
|
-
method_option :relative, :type => :boolean
|
281
|
+
method_option :relative, :type => :boolean,
|
270
282
|
:default => false,
|
271
283
|
:desc => "Make pathnames relative to the current working directory"
|
272
|
-
method_option :recipes_only, :type => :boolean
|
284
|
+
method_option :recipes_only, :type => :boolean,
|
273
285
|
:default => false,
|
274
286
|
:desc => "Show recipes only (mostly useful to display multiple recipes inheritance)"
|
275
287
|
def dag(*recipe_paths)
|
@@ -300,10 +312,10 @@ module Kameleon
|
|
300
312
|
end
|
301
313
|
|
302
314
|
desc "dryrun <RECIPE_PATH>", "Show the steps the build would process"
|
303
|
-
method_option :global, :type => :hash
|
315
|
+
method_option :global, :type => :hash,
|
304
316
|
:default => {}, :aliases => "-g",
|
305
317
|
:desc => "Set custom global variables."
|
306
|
-
method_option :relative, :type => :boolean
|
318
|
+
method_option :relative, :type => :boolean,
|
307
319
|
:default => false,
|
308
320
|
:desc => "Make pathnames relative to the current working directory"
|
309
321
|
def dryrun(*recipe_paths)
|
@@ -315,10 +327,10 @@ module Kameleon
|
|
315
327
|
end
|
316
328
|
|
317
329
|
desc "export <RECIPE_PATH> <EXPORT_PATH>", "Export the given recipe with its steps and data to a given directory"
|
318
|
-
method_option :global, :type => :hash
|
330
|
+
method_option :global, :type => :hash,
|
319
331
|
:default => {}, :aliases => "-g",
|
320
332
|
:desc => "Set custom global variables."
|
321
|
-
method_option :add, :type => :boolean
|
333
|
+
method_option :add, :type => :boolean,
|
322
334
|
:default => false, :aliases => "-A",
|
323
335
|
:desc => "export recipe and steps to an existing directory (this may overwrite some existing files)"
|
324
336
|
def export(recipe_path,dest_path)
|
@@ -358,36 +370,36 @@ module Kameleon
|
|
358
370
|
end
|
359
371
|
|
360
372
|
desc "build <RECIPE_PATH>", "Builds the appliance from the given recipe"
|
361
|
-
method_option :build_path, :type => :string
|
373
|
+
method_option :build_path, :type => :string,
|
362
374
|
:default => nil, :aliases => "-b",
|
363
375
|
:desc => "Sets the build directory path"
|
364
|
-
method_option :clean, :type => :boolean
|
376
|
+
method_option :clean, :type => :boolean,
|
365
377
|
:default => false,
|
366
378
|
:desc => "Runs the command `kameleon clean` first"
|
367
|
-
method_option :from_checkpoint, :type => :string
|
379
|
+
method_option :from_checkpoint, :type => :string,
|
368
380
|
:default => nil,
|
369
381
|
:desc => "Uses specific checkpoint to build the image. " \
|
370
382
|
"Default value is the last checkpoint."
|
371
|
-
method_option :enable_checkpoint, :type => :boolean
|
383
|
+
method_option :enable_checkpoint, :type => :boolean,
|
372
384
|
:default => false,
|
373
385
|
:desc => "Enables checkpoint [experimental]"
|
374
|
-
method_option :list_checkpoints, :type => :boolean
|
386
|
+
method_option :list_checkpoints, :type => :boolean, :aliases => "--checkpoints",
|
375
387
|
:default => false,
|
376
388
|
:desc => "Lists all availables checkpoints"
|
377
389
|
method_option :enable_cache, :type => :boolean,
|
378
390
|
:default => false,
|
379
391
|
:desc => "Generates a persistent cache for the appliance."
|
380
|
-
method_option :cache_path, :type => :string
|
392
|
+
method_option :cache_path, :type => :string,
|
381
393
|
:default => nil,
|
382
394
|
:desc => "Sets the cache directory path"
|
383
|
-
method_option :from_cache, :type => :string
|
395
|
+
method_option :from_cache, :type => :string,
|
384
396
|
:default => nil,
|
385
397
|
:desc => "Uses a persistent cache tar file to build the image."
|
386
|
-
method_option :cache_archive_compression, :type => :string
|
398
|
+
method_option :cache_archive_compression, :type => :string,
|
387
399
|
:enum => ["none", "gzip", "bz2", "xz"],
|
388
400
|
:default => "gzip",
|
389
401
|
:desc => "Set the persistent cache tar file compression."
|
390
|
-
method_option :polipo_path, :type => :string
|
402
|
+
method_option :polipo_path, :type => :string,
|
391
403
|
:default => nil,
|
392
404
|
:desc => "Full path of the polipo binary to use for the persistent cache."
|
393
405
|
method_option :proxy, :type => :string, :default => "",
|
@@ -397,7 +409,7 @@ module Kameleon
|
|
397
409
|
:desc => "Specifies the username and password if the parent "\
|
398
410
|
"proxy requires authorisation it should have the "\
|
399
411
|
"form 'username:password'"
|
400
|
-
method_option :proxy_offline, :type => :boolean
|
412
|
+
method_option :proxy_offline, :type => :boolean,
|
401
413
|
:default => false, :aliases => "--offline",
|
402
414
|
:desc => "Prevents Polipo from contacting remote servers"
|
403
415
|
method_option :global, :type => :hash,
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.10.
|
1
|
+
2.10.4
|
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.10.
|
4
|
+
version: 2.10.4
|
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: 2020-
|
15
|
+
date: 2020-05-11 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: childprocess
|
@@ -112,9 +112,9 @@ dependencies:
|
|
112
112
|
version: '1'
|
113
113
|
description: The mindful appliance builder
|
114
114
|
email:
|
115
|
-
- salem
|
116
|
-
- michael.mercier@
|
117
|
-
-
|
115
|
+
- salem@harrache.info
|
116
|
+
- michael.mercier@libr.fr
|
117
|
+
- camilo1729@gmail.com
|
118
118
|
- pierre.neyron@imag.fr
|
119
119
|
- bruno.bzeznik@imag.fr
|
120
120
|
executables:
|