power_stencil 0.4.16 → 0.4.17
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/doc/builds.md +2 -0
- data/etc/base_commands_definition.yml +14 -1
- data/etc/power_stencil.yaml +4 -0
- data/lib/power_stencil/command_processors/build.rb +5 -0
- data/lib/power_stencil/engine/build_handling.rb +51 -1
- data/lib/power_stencil/project/paths.rb +8 -0
- data/lib/power_stencil/utils/os.rb +15 -0
- data/lib/power_stencil/version.rb +1 -1
- data/lib/power_stencil.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 090721c55ffc99653d0be5a9b923c45c175cd538
|
4
|
+
data.tar.gz: 80ba7636a39ceed4f6403cef1170206ca33ee8d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 601aa0ba6a72326dc3dab22ecc0304ac26c33046dd0f208c1bd2e045d0767c4624a69027389dc76b2dc154f38eb55750e7229fffcbaee853aa891b77368d2e08
|
7
|
+
data.tar.gz: 87f465b799e7802715383c226e8acd57c4eb0cc50ff336b7666eb22802b876662554b43d0e482a2f0fc84b15f4323e047484dc19543413dd47463024c2bb99d8
|
data/doc/builds.md
CHANGED
@@ -244,6 +244,8 @@ PowerStencil::SystemEntityDefinitions::ProcessDescriptor:
|
|
244
244
|
```
|
245
245
|
It creates a `process_descriptor` entity (which is referenced from the `simple_exec` entity as the `post_process` field). So you can edit this process descriptor and define there whatever executable you want to be called.
|
246
246
|
|
247
|
+
:information_source: If you are using Windows you may want to rename `main.sh` to `main.bat` and edit the `process_descriptor/simple_exec_example.process` to change the process to `main.bat`.
|
248
|
+
|
247
249
|
This should already cover 95% of everything needed.
|
248
250
|
|
249
251
|
If you want to do something more custom after the build process completed, this is where you will have to do a [plugin][plugins].
|
@@ -268,4 +268,17 @@
|
|
268
268
|
parallelized:
|
269
269
|
:type: bool
|
270
270
|
:summary: Parallelizes builds if possible
|
271
|
-
|
271
|
+
tag-build:
|
272
|
+
:type: string
|
273
|
+
:summary: Tags the build with a specific name
|
274
|
+
:long_aliases:
|
275
|
+
- tag
|
276
|
+
:short_aliases:
|
277
|
+
- t
|
278
|
+
target-path:
|
279
|
+
:type: string
|
280
|
+
:summary: Build into specified directory
|
281
|
+
:long_aliases:
|
282
|
+
- path
|
283
|
+
:short_aliases:
|
284
|
+
- p
|
data/etc/power_stencil.yaml
CHANGED
@@ -33,6 +33,10 @@
|
|
33
33
|
:project_plugins_directory_name: plugins
|
34
34
|
# Root directory where builds are generated
|
35
35
|
:project_build_root_directory_name: build
|
36
|
+
# Last build link name
|
37
|
+
:project_build_last_stable_path: last_build
|
38
|
+
# Previous build link name
|
39
|
+
:project_build_previous_stable_path: previous_build
|
36
40
|
|
37
41
|
|
38
42
|
# DSL CUSTOMIZATIONS
|
@@ -25,6 +25,11 @@ module PowerStencil
|
|
25
25
|
raise PowerStencil::Error, 'Please specify something to build'
|
26
26
|
end
|
27
27
|
|
28
|
+
if config[:'build-tag']
|
29
|
+
raise PowerStencil::Error, "Invalid tag name '#{config[:'build-tag']}'" if config[:'build-tag'].include? '/'
|
30
|
+
raise PowerStencil::Error, "Cannot tag a build under Windows" if PowerStencil::Utils::Os.windows?
|
31
|
+
end
|
32
|
+
|
28
33
|
targets = targets_from_criteria analyse_extra_params, project.engine.root_universe
|
29
34
|
raise PowerStencil::Error, 'No valid entity specified' if targets.empty?
|
30
35
|
project.engine.build targets, fail_on_error: config[:'fail-on-error'], parallelized: config[:parallelized]
|
@@ -26,7 +26,16 @@ module PowerStencil
|
|
26
26
|
entity_build_report << msg
|
27
27
|
raise PowerStencil::Error, msg
|
28
28
|
end
|
29
|
-
build_entity_target_path =
|
29
|
+
build_entity_target_path = if config[:'target-path']
|
30
|
+
specified_target_path = File.expand_path config[:'target-path']
|
31
|
+
if File.exists? specified_target_path
|
32
|
+
raise PowerStencil::Error, "Specified target path '#{specified_target_path}' already exists ! Aborting..."
|
33
|
+
end
|
34
|
+
specified_target_path
|
35
|
+
else
|
36
|
+
File.join build_target_path, entity_to_build.as_path.tr('/', '_')
|
37
|
+
end
|
38
|
+
|
30
39
|
puts_and_logs "De-templating files for '#{entity_to_build.as_path}' into '#{build_entity_target_path}'"
|
31
40
|
build_entity entity_to_build, build_entity_target_path
|
32
41
|
entity_build_report << 'Ok'
|
@@ -46,10 +55,51 @@ module PowerStencil
|
|
46
55
|
|
47
56
|
private
|
48
57
|
|
58
|
+
def manage_build_links(last_build_path)
|
59
|
+
if PowerStencil::Utils::Os.windows?
|
60
|
+
logger.info 'Cannot create link to last build folder under Windows !'
|
61
|
+
return
|
62
|
+
end
|
63
|
+
last_build_link_path = project.last_build_stable_link_path
|
64
|
+
previous_build_link_path = project.previous_build_stable_link_path
|
65
|
+
current_last_build_link_target_path = (File.symlink? last_build_link_path) ? File.readlink(last_build_link_path) : nil
|
66
|
+
|
67
|
+
safely_remove_link previous_build_link_path
|
68
|
+
unless current_last_build_link_target_path.nil?
|
69
|
+
File.symlink current_last_build_link_target_path, previous_build_link_path unless File.exists? previous_build_link_path
|
70
|
+
end
|
71
|
+
|
72
|
+
safely_remove_link last_build_link_path
|
73
|
+
File.symlink last_build_path, last_build_link_path unless File.exists? last_build_link_path
|
74
|
+
|
75
|
+
if config[:'tag-build']
|
76
|
+
build_tag_path = File.join project.build_root_path, config[:'tag-build']
|
77
|
+
safely_remove_link build_tag_path
|
78
|
+
File.symlink last_build_path, build_tag_path unless File.exists? build_tag_path
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
def safely_remove_link(link)
|
84
|
+
if File.exists? link
|
85
|
+
if File.symlink? link
|
86
|
+
File.unlink link
|
87
|
+
else
|
88
|
+
logger.warn "Warning '#{link}' is not a symlink !!"
|
89
|
+
return false
|
90
|
+
end
|
91
|
+
else
|
92
|
+
logger.debug "No file/link to delete ('#{link}')"
|
93
|
+
end
|
94
|
+
true
|
95
|
+
end
|
96
|
+
|
97
|
+
|
49
98
|
def build_entity(entity_to_build, target_path)
|
50
99
|
logger.info "Building #{entity_to_build.as_path} in '#{target_path}'"
|
51
100
|
render_source entity_to_build.templates_path, target_path, main_entry_point: entity_to_build.as_path
|
52
101
|
logger.info "Detemplatized filed generated in '#{target_path}'"
|
102
|
+
manage_build_links target_path
|
53
103
|
target_plugin_name = entity_to_build.buildable_by
|
54
104
|
if target_plugin_name.empty?
|
55
105
|
post_build_hook entity_to_build, target_path
|
@@ -19,6 +19,14 @@ module PowerStencil
|
|
19
19
|
File.join build_root_path, timestamped_uniq_dir(seed, Time.now)
|
20
20
|
end
|
21
21
|
|
22
|
+
def last_build_stable_link_path
|
23
|
+
File.join build_root_path, PowerStencil.config[:project_build_last_stable_path]
|
24
|
+
end
|
25
|
+
|
26
|
+
def previous_build_stable_link_path
|
27
|
+
File.join build_root_path, PowerStencil.config[:project_build_previous_stable_path]
|
28
|
+
end
|
29
|
+
|
22
30
|
def build_root_path
|
23
31
|
File.join project_root, PowerStencil.config[:project_build_root_directory_name]
|
24
32
|
end
|
data/lib/power_stencil.rb
CHANGED
@@ -7,6 +7,7 @@ $DO_NOT_AUTOSTART_CLIMATIC=true
|
|
7
7
|
require 'climatic'
|
8
8
|
|
9
9
|
require 'power_stencil/error'
|
10
|
+
require 'power_stencil/utils/os'
|
10
11
|
require 'power_stencil/utils/semantic_version'
|
11
12
|
require 'power_stencil/utils/file_helper'
|
12
13
|
require 'power_stencil/utils/directory_processor'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_stencil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Briais
|
@@ -247,6 +247,7 @@ files:
|
|
247
247
|
- lib/power_stencil/utils/file_helper.rb
|
248
248
|
- lib/power_stencil/utils/gem_utils.rb
|
249
249
|
- lib/power_stencil/utils/graphviz.rb
|
250
|
+
- lib/power_stencil/utils/os.rb
|
250
251
|
- lib/power_stencil/utils/secure_require.rb
|
251
252
|
- lib/power_stencil/utils/semantic_version.rb
|
252
253
|
- lib/power_stencil/version.rb
|
@@ -259,7 +260,7 @@ metadata:
|
|
259
260
|
documentation_uri: https://gitlab.com/tools4devops/power_stencil/blob/master/README.md
|
260
261
|
source_code_uri: https://gitlab.com/tools4devops/power_stencil
|
261
262
|
homepage_uri: https://powerstencil.brizone.org/
|
262
|
-
post_install_message: "\nThank you for installing PowerStencil 0.4.
|
263
|
+
post_install_message: "\nThank you for installing PowerStencil 0.4.17 !\nFrom the
|
263
264
|
command line you can run `power_stencil --help`\nIf your shell is not completing
|
264
265
|
the command:\n If you use rbenv: `rbenv rehash`\n If you use zsh : `rehash`\n\nOfficial
|
265
266
|
Website : https://powerstencil.brizone.org/\nFull documentation here :
|