power_stencil 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +198 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/bin/update_plugin_template +79 -0
  13. data/doc/builds.md +267 -0
  14. data/doc/entities.md +964 -0
  15. data/doc/example_use_cases.md +59 -0
  16. data/doc/images/power-stencil-entity-build.svg +481 -0
  17. data/doc/images/power-stencil-entity-creation.svg +375 -0
  18. data/doc/images/power-stencil-simple-flow.svg +265 -0
  19. data/doc/plugins.md +169 -0
  20. data/doc/templates.md +333 -0
  21. data/etc/base_commands_definition.yml +259 -0
  22. data/etc/meta_templates/plugin_seed/etc/command_line.yaml +12 -0
  23. data/etc/meta_templates/plugin_seed/etc/plugin_config.yaml +4 -0
  24. data/etc/meta_templates/plugin_seed/etc/templates/.git_keep +0 -0
  25. data/etc/meta_templates/plugin_seed/lib/{entity}.rb.erb +34 -0
  26. data/etc/meta_templates/plugin_seed/lib/{entity}/entity_definitions/{entity}_entity.rb.erb +11 -0
  27. data/etc/meta_templates/plugin_seed/lib/{entity}/plugin_helper.rb.erb +17 -0
  28. data/etc/meta_templates/plugin_seed/lib/{entity}/version.rb.erb +3 -0
  29. data/etc/meta_templates/plugin_seed/lib/{entity}/{entity}_processor.rb.erb +19 -0
  30. data/etc/meta_templates/plugin_seed/psplugin_{entity}.gemspec +36 -0
  31. data/etc/power_stencil.yaml +92 -0
  32. data/etc/templates/plugin_definition/.gitignore +11 -0
  33. data/etc/templates/plugin_definition/.rspec +3 -0
  34. data/etc/templates/plugin_definition/.travis.yml +5 -0
  35. data/etc/templates/plugin_definition/CODE_OF_CONDUCT.md +74 -0
  36. data/etc/templates/plugin_definition/Gemfile +6 -0
  37. data/etc/templates/plugin_definition/LICENSE.txt +21 -0
  38. data/etc/templates/plugin_definition/README.md +43 -0
  39. data/etc/templates/plugin_definition/Rakefile +6 -0
  40. data/etc/templates/plugin_definition/bin/console +14 -0
  41. data/etc/templates/plugin_definition/bin/setup +8 -0
  42. data/etc/templates/plugin_definition/etc/command_line.yaml +12 -0
  43. data/etc/templates/plugin_definition/etc/plugin_config.yaml +4 -0
  44. data/etc/templates/plugin_definition/etc/templates/.git_keep +1 -0
  45. data/etc/templates/plugin_definition/lib/{entity}.rb.erb +34 -0
  46. data/etc/templates/plugin_definition/lib/{entity}/entity_definitions/{entity}_entity.rb.erb +11 -0
  47. data/etc/templates/plugin_definition/lib/{entity}/plugin_helper.rb.erb +17 -0
  48. data/etc/templates/plugin_definition/lib/{entity}/version.rb.erb +3 -0
  49. data/etc/templates/plugin_definition/lib/{entity}/{entity}_processor.rb.erb +19 -0
  50. data/etc/templates/plugin_definition/psplugin_{entity}.gemspec +36 -0
  51. data/etc/templates/plugin_definition/spec/spec_helper.rb +14 -0
  52. data/etc/templates/plugin_definition/spec/{entity}_spec.rb +9 -0
  53. data/etc/templates/project/.copy_ignore +2 -0
  54. data/etc/templates/project/.gitignore.erb +6 -0
  55. data/etc/templates/project/.ps_project/entities/.gitkeep +0 -0
  56. data/etc/templates/project/.ps_project/entities/README.md +11 -0
  57. data/etc/templates/project/.ps_project/entity_definitions/.gitkeep +0 -0
  58. data/etc/templates/project/.ps_project/entity_definitions/README.md +15 -0
  59. data/etc/templates/project/.ps_project/personal-config.yaml +8 -0
  60. data/etc/templates/project/.ps_project/plugins/.gitkeep +0 -0
  61. data/etc/templates/project/.ps_project/templates-templates/.gitkeep +0 -0
  62. data/etc/templates/project/.ps_project/templates-templates/README.md +13 -0
  63. data/etc/templates/project/.ps_project/user_entities/.gitkeep +0 -0
  64. data/etc/templates/project/.ps_project/user_entities/README.md +12 -0
  65. data/etc/templates/project/.ps_project/versioned-config.yaml +6 -0
  66. data/etc/templates/simple_exec/main.sh +4 -0
  67. data/exe/power_stencil +28 -0
  68. data/lib/power_stencil.rb +53 -0
  69. data/lib/power_stencil/command_processors/build.rb +43 -0
  70. data/lib/power_stencil/command_processors/check.rb +35 -0
  71. data/lib/power_stencil/command_processors/create.rb +70 -0
  72. data/lib/power_stencil/command_processors/delete.rb +38 -0
  73. data/lib/power_stencil/command_processors/edit.rb +35 -0
  74. data/lib/power_stencil/command_processors/entity_helper.rb +105 -0
  75. data/lib/power_stencil/command_processors/get.rb +22 -0
  76. data/lib/power_stencil/command_processors/info.rb +41 -0
  77. data/lib/power_stencil/command_processors/init.rb +47 -0
  78. data/lib/power_stencil/command_processors/new_plugin.rb +31 -0
  79. data/lib/power_stencil/command_processors/root.rb +27 -0
  80. data/lib/power_stencil/command_processors/shell.rb +37 -0
  81. data/lib/power_stencil/command_processors/trace_helper.rb +20 -0
  82. data/lib/power_stencil/dsl/base.rb +24 -0
  83. data/lib/power_stencil/dsl/entities.rb +46 -0
  84. data/lib/power_stencil/dsl/plugin_generation.rb +17 -0
  85. data/lib/power_stencil/engine/base.rb +50 -0
  86. data/lib/power_stencil/engine/build_handling.rb +77 -0
  87. data/lib/power_stencil/engine/directory_processor.rb +111 -0
  88. data/lib/power_stencil/engine/entities_definitions.rb +42 -0
  89. data/lib/power_stencil/engine/entities_handling.rb +76 -0
  90. data/lib/power_stencil/engine/entity_engine.rb +20 -0
  91. data/lib/power_stencil/engine/init_engine.rb +18 -0
  92. data/lib/power_stencil/engine/project_engine.rb +75 -0
  93. data/lib/power_stencil/engine/renderers/erb.rb +21 -0
  94. data/lib/power_stencil/error.rb +20 -0
  95. data/lib/power_stencil/initializer.rb +87 -0
  96. data/lib/power_stencil/plugins/base.rb +54 -0
  97. data/lib/power_stencil/plugins/capabilities.rb +30 -0
  98. data/lib/power_stencil/plugins/command_line.rb +27 -0
  99. data/lib/power_stencil/plugins/config.rb +32 -0
  100. data/lib/power_stencil/plugins/dependencies.rb +32 -0
  101. data/lib/power_stencil/plugins/gem.rb +57 -0
  102. data/lib/power_stencil/plugins/require.rb +77 -0
  103. data/lib/power_stencil/plugins/templates.rb +21 -0
  104. data/lib/power_stencil/project/base.rb +79 -0
  105. data/lib/power_stencil/project/config.rb +54 -0
  106. data/lib/power_stencil/project/create.rb +30 -0
  107. data/lib/power_stencil/project/info.rb +72 -0
  108. data/lib/power_stencil/project/paths.rb +119 -0
  109. data/lib/power_stencil/project/plugins.rb +89 -0
  110. data/lib/power_stencil/project/proxy.rb +13 -0
  111. data/lib/power_stencil/project/templates.rb +56 -0
  112. data/lib/power_stencil/project/versioning.rb +29 -0
  113. data/lib/power_stencil/system_entity_definitions/all.rb +14 -0
  114. data/lib/power_stencil/system_entity_definitions/buildable.rb +23 -0
  115. data/lib/power_stencil/system_entity_definitions/entity_override.rb +8 -0
  116. data/lib/power_stencil/system_entity_definitions/entity_project_common.rb +33 -0
  117. data/lib/power_stencil/system_entity_definitions/has_associated_files.rb +13 -0
  118. data/lib/power_stencil/system_entity_definitions/non_persistent.rb +14 -0
  119. data/lib/power_stencil/system_entity_definitions/plugin.rb +17 -0
  120. data/lib/power_stencil/system_entity_definitions/process_descriptor.rb +15 -0
  121. data/lib/power_stencil/system_entity_definitions/project_config.rb +24 -0
  122. data/lib/power_stencil/system_entity_definitions/project_entity.rb +16 -0
  123. data/lib/power_stencil/system_entity_definitions/simple_exec.rb +47 -0
  124. data/lib/power_stencil/utils/directory_processor.rb +54 -0
  125. data/lib/power_stencil/utils/file_edit.rb +87 -0
  126. data/lib/power_stencil/utils/file_helper.rb +56 -0
  127. data/lib/power_stencil/utils/gem_utils.rb +13 -0
  128. data/lib/power_stencil/utils/secure_require.rb +26 -0
  129. data/lib/power_stencil/utils/semantic_version.rb +128 -0
  130. data/lib/power_stencil/version.rb +3 -0
  131. data/power_stencil.gemspec +32 -0
  132. metadata +287 -0
@@ -0,0 +1,59 @@
1
+ Example use cases
2
+ =================
3
+
4
+ <!-- TOC -->
5
+
6
+ - [Overview](#overview)
7
+ - [Managing machines, routers, firewalls...](#managing-machines-routers-firewalls)
8
+ - [Deploying Snaps, Docker containers, VMs](#deploying-snaps-docker-containers-vms)
9
+ - [And...](#and)
10
+
11
+ <!-- /TOC -->
12
+ [:back:][Documentation root]
13
+
14
+
15
+ # Overview
16
+
17
+ Considering the genericity of the `PowerStencil`, it is a bit difficult to a scope for its usage. It's a bit like saying what you could do with a programming language.
18
+
19
+ Neverthless, I will give two short ideas that should open you mind to things you could do with it.
20
+
21
+
22
+ # Managing machines, routers, firewalls...
23
+
24
+ If you are in a network, where you manage let's say a DCHP server, a DNS and a firewall, you have probably to deal with a number of config files with a lot of information in common but very different file formats.
25
+
26
+ This is exactly where the need of an agnostic data storage and multiple generated config files would be very useful.
27
+
28
+ You could define machines, interfaces, networks as [entities] and having [templates] for each of the maintained config files.
29
+
30
+ And of course, changes are tracked using Git, providing easy fallback for something as critical as your network config.
31
+
32
+ # Deploying Snaps, Docker containers, VMs
33
+
34
+ If you manage a containerized infrastructure, you probably noticed how often you need to have the same information duplicated from your application builds, Snaps, Docker containers or VM definitions (names, ports, entry-points...)
35
+
36
+ This is where the paradigm of `PowerStencil` will ensure constency across your various deployment units. You can integrate this in your CI/CD infrastructure, avoiding the painful communication with third party database while maintaining traceability.
37
+
38
+
39
+ # And...
40
+
41
+ There are many example we could think about, now it's your turn ! [Read the doc], try it and discover what `PowerStencil` can do for you.
42
+
43
+ [:back:][Documentation root]
44
+ <!-- End of Document -->
45
+
46
+ <!-- Pages -->
47
+ [Documentation root]: ../README.md "Back to documentation root"
48
+ [templates]: templates.md "Templates in PowerStencil"
49
+ [entities]: entities.md "Entities in PowerStencil"
50
+ [Read the doc]: ../README.md#getting-started "Get started with PowerStencil"
51
+
52
+
53
+ <!-- Code links -->
54
+
55
+
56
+ <!-- Illustrations -->
57
+
58
+
59
+ <!-- External links -->
@@ -0,0 +1,481 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="413.47772mm"
13
+ height="105.02937mm"
14
+ viewBox="0 0 413.47773 105.02936"
15
+ version="1.1"
16
+ id="svg8"
17
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
18
+ sodipodi:docname="power-stencil-entity-build.svg">
19
+ <title
20
+ id="title1457">PowerStencil entity build flow description</title>
21
+ <defs
22
+ id="defs2">
23
+ <marker
24
+ inkscape:stockid="Arrow2Send"
25
+ orient="auto"
26
+ refY="0"
27
+ refX="0"
28
+ id="marker2623"
29
+ style="overflow:visible"
30
+ inkscape:isstock="true">
31
+ <path
32
+ id="path2621"
33
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
34
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
35
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
36
+ inkscape:connector-curvature="0" />
37
+ </marker>
38
+ <marker
39
+ inkscape:stockid="Arrow2Send"
40
+ orient="auto"
41
+ refY="0"
42
+ refX="0"
43
+ id="marker2605"
44
+ style="overflow:visible"
45
+ inkscape:isstock="true">
46
+ <path
47
+ id="path2603"
48
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
49
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
50
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
51
+ inkscape:connector-curvature="0" />
52
+ </marker>
53
+ <marker
54
+ inkscape:isstock="true"
55
+ style="overflow:visible"
56
+ id="marker2579"
57
+ refX="0"
58
+ refY="0"
59
+ orient="auto"
60
+ inkscape:stockid="Arrow2Send"
61
+ inkscape:collect="always">
62
+ <path
63
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
64
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
65
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
66
+ id="path2577"
67
+ inkscape:connector-curvature="0" />
68
+ </marker>
69
+ <marker
70
+ inkscape:stockid="Arrow2Send"
71
+ orient="auto"
72
+ refY="0"
73
+ refX="0"
74
+ id="marker2482"
75
+ style="overflow:visible"
76
+ inkscape:isstock="true">
77
+ <path
78
+ id="path2480"
79
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
80
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
81
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
82
+ inkscape:connector-curvature="0" />
83
+ </marker>
84
+ <inkscape:path-effect
85
+ only_selected="false"
86
+ apply_with_weight="true"
87
+ apply_no_weight="true"
88
+ helper_size="0"
89
+ steps="2"
90
+ weight="33.333333"
91
+ is_visible="true"
92
+ id="path-effect2478"
93
+ effect="bspline" />
94
+ <inkscape:path-effect
95
+ effect="bspline"
96
+ id="path-effect2367"
97
+ is_visible="true"
98
+ weight="33.333333"
99
+ steps="2"
100
+ helper_size="0"
101
+ apply_no_weight="true"
102
+ apply_with_weight="true"
103
+ only_selected="false" />
104
+ <marker
105
+ inkscape:stockid="Arrow2Send"
106
+ orient="auto"
107
+ refY="0"
108
+ refX="0"
109
+ id="Arrow2Send"
110
+ style="overflow:visible"
111
+ inkscape:isstock="true"
112
+ inkscape:collect="always">
113
+ <path
114
+ id="path2123"
115
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
116
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
117
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
118
+ inkscape:connector-curvature="0" />
119
+ </marker>
120
+ <inkscape:path-effect
121
+ effect="bspline"
122
+ id="path-effect2088"
123
+ is_visible="true"
124
+ weight="33.333333"
125
+ steps="2"
126
+ helper_size="0"
127
+ apply_no_weight="true"
128
+ apply_with_weight="true"
129
+ only_selected="false" />
130
+ <marker
131
+ inkscape:isstock="true"
132
+ style="overflow:visible"
133
+ id="marker1231"
134
+ refX="0"
135
+ refY="0"
136
+ orient="auto"
137
+ inkscape:stockid="Arrow1Send">
138
+ <path
139
+ inkscape:connector-curvature="0"
140
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
141
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1"
142
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
143
+ id="path1229" />
144
+ </marker>
145
+ <inkscape:path-effect
146
+ only_selected="false"
147
+ apply_with_weight="true"
148
+ apply_no_weight="true"
149
+ helper_size="0"
150
+ steps="2"
151
+ weight="33.333333"
152
+ is_visible="true"
153
+ id="path-effect1227"
154
+ effect="bspline" />
155
+ <marker
156
+ inkscape:stockid="Arrow1Lend"
157
+ orient="auto"
158
+ refY="0"
159
+ refX="0"
160
+ id="Arrow1Lend"
161
+ style="overflow:visible"
162
+ inkscape:isstock="true">
163
+ <path
164
+ id="path1086"
165
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
166
+ style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1"
167
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
168
+ inkscape:connector-curvature="0" />
169
+ </marker>
170
+ <inkscape:path-effect
171
+ effect="bspline"
172
+ id="path-effect1081"
173
+ is_visible="true"
174
+ weight="33.333333"
175
+ steps="2"
176
+ helper_size="0"
177
+ apply_no_weight="true"
178
+ apply_with_weight="true"
179
+ only_selected="false" />
180
+ <marker
181
+ inkscape:stockid="Arrow2Send"
182
+ orient="auto"
183
+ refY="0"
184
+ refX="0"
185
+ id="Arrow2Send-0"
186
+ style="overflow:visible"
187
+ inkscape:isstock="true">
188
+ <path
189
+ inkscape:connector-curvature="0"
190
+ id="path2123-7"
191
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
192
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
193
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
194
+ </marker>
195
+ <inkscape:path-effect
196
+ effect="bspline"
197
+ id="path-effect2088-0"
198
+ is_visible="true"
199
+ weight="33.333333"
200
+ steps="2"
201
+ helper_size="0"
202
+ apply_no_weight="true"
203
+ apply_with_weight="true"
204
+ only_selected="false" />
205
+ <inkscape:path-effect
206
+ effect="bspline"
207
+ id="path-effect2088-3"
208
+ is_visible="true"
209
+ weight="33.333333"
210
+ steps="2"
211
+ helper_size="0"
212
+ apply_no_weight="true"
213
+ apply_with_weight="true"
214
+ only_selected="false" />
215
+ <marker
216
+ inkscape:isstock="true"
217
+ style="overflow:visible"
218
+ id="marker2579-8"
219
+ refX="0"
220
+ refY="0"
221
+ orient="auto"
222
+ inkscape:stockid="Arrow2Send">
223
+ <path
224
+ inkscape:connector-curvature="0"
225
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
226
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
227
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
228
+ id="path2577-3" />
229
+ </marker>
230
+ <marker
231
+ inkscape:isstock="true"
232
+ style="overflow:visible"
233
+ id="marker2579-9"
234
+ refX="0"
235
+ refY="0"
236
+ orient="auto"
237
+ inkscape:stockid="Arrow2Send">
238
+ <path
239
+ inkscape:connector-curvature="0"
240
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
241
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
242
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
243
+ id="path2577-37" />
244
+ </marker>
245
+ </defs>
246
+ <sodipodi:namedview
247
+ id="base"
248
+ pagecolor="#ffffff"
249
+ bordercolor="#666666"
250
+ borderopacity="1.0"
251
+ inkscape:pageopacity="0.0"
252
+ inkscape:pageshadow="2"
253
+ inkscape:zoom="0.7"
254
+ inkscape:cx="778.37399"
255
+ inkscape:cy="45.427503"
256
+ inkscape:document-units="mm"
257
+ inkscape:current-layer="layer1"
258
+ showgrid="false"
259
+ inkscape:window-width="1920"
260
+ inkscape:window-height="1141"
261
+ inkscape:window-x="0"
262
+ inkscape:window-y="31"
263
+ inkscape:window-maximized="1"
264
+ fit-margin-top="10"
265
+ fit-margin-left="10"
266
+ fit-margin-right="10"
267
+ fit-margin-bottom="10" />
268
+ <metadata
269
+ id="metadata5">
270
+ <rdf:RDF>
271
+ <cc:Work
272
+ rdf:about="">
273
+ <dc:format>image/svg+xml</dc:format>
274
+ <dc:type
275
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
276
+ <dc:title>PowerStencil entity build flow description</dc:title>
277
+ <dc:creator>
278
+ <cc:Agent>
279
+ <dc:title>L.Briais</dc:title>
280
+ </cc:Agent>
281
+ </dc:creator>
282
+ </cc:Work>
283
+ </rdf:RDF>
284
+ </metadata>
285
+ <g
286
+ inkscape:label="Calque 1"
287
+ inkscape:groupmode="layer"
288
+ id="layer1"
289
+ transform="translate(45.205358,-261.86764)">
290
+ <g
291
+ id="g2627">
292
+ <path
293
+ inkscape:connector-curvature="0"
294
+ id="path2552"
295
+ d="M 55.197521,339.7317 H 259.30466"
296
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.56184936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2579)" />
297
+ <path
298
+ inkscape:connector-curvature="0"
299
+ id="path2581"
300
+ d="m 159.6764,309.90547 35.65318,29.98132"
301
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.56184936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
302
+ </g>
303
+ <path
304
+ style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.56184936;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Send)"
305
+ d="m 59.479926,299.28825 c 18.292895,0 36.585559,0 54.877994,0"
306
+ id="path2086"
307
+ inkscape:connector-curvature="0"
308
+ inkscape:path-effect="#path-effect2088"
309
+ inkscape:original-d="m 59.479926,299.28825 c 18.292895,-2.7e-4 36.585559,-2.7e-4 54.877994,0" />
310
+ <flowRoot
311
+ transform="matrix(0.26458333,0,0,0.26458333,-29.067848,94.304276)"
312
+ style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
313
+ id="flowRoot943"
314
+ xml:space="preserve"><flowRegion
315
+ id="flowRegion945"><rect
316
+ y="246.12077"
317
+ x="47.142857"
318
+ height="421.42856"
319
+ width="457.14285"
320
+ id="rect947" /></flowRegion><flowPara
321
+ id="flowPara949" /></flowRoot> <g
322
+ id="g1149"
323
+ transform="translate(-115.58513,196.24542)">
324
+ <rect
325
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#c8e1c8;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.7077052;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
326
+ id="rect1139"
327
+ width="87.226822"
328
+ height="21.836939"
329
+ x="87.683319"
330
+ y="132.60976"
331
+ ry="1.7865629" />
332
+ <text
333
+ xml:space="preserve"
334
+ style="font-style:normal;font-weight:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
335
+ x="93.796112"
336
+ y="138.95341"
337
+ id="text1147"><tspan
338
+ sodipodi:role="line"
339
+ x="93.796112"
340
+ y="138.95341"
341
+ style="stroke-width:0.26458332px"
342
+ id="tspan1143">templates in project in </tspan><tspan
343
+ sodipodi:role="line"
344
+ x="93.796112"
345
+ y="144.74118"
346
+ style="stroke-width:0.26458332px"
347
+ id="tspan1145">&lt;entity_type&gt;/&lt;entity_name&gt;</tspan></text>
348
+ </g>
349
+ <g
350
+ id="g892"
351
+ transform="translate(-100.17379,187.1839)">
352
+ <rect
353
+ ry="1.7865629"
354
+ y="101.99368"
355
+ x="72.27198"
356
+ height="21.836939"
357
+ width="87.226822"
358
+ id="rect1062-3"
359
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a7c2db;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.7077052;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
360
+ <text
361
+ id="text819-3"
362
+ y="110.46727"
363
+ x="115.78365"
364
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
365
+ xml:space="preserve"><tspan
366
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
367
+ y="110.46727"
368
+ x="115.78365"
369
+ sodipodi:role="line"
370
+ id="tspan951-7">Project Entities</tspan></text>
371
+ <text
372
+ xml:space="preserve"
373
+ style="font-style:normal;font-weight:normal;font-size:2.72649646px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15579979px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
374
+ x="115.86675"
375
+ y="115.04259"
376
+ id="text882"><tspan
377
+ sodipodi:role="line"
378
+ id="tspan880"
379
+ x="116.30076"
380
+ y="115.04259"
381
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.72649646px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.15579979px">Stored in </tspan><tspan
382
+ sodipodi:role="line"
383
+ x="115.86675"
384
+ y="118.45071"
385
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.72649646px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.15579979px"
386
+ id="tspan884">.ps_project/entities/&lt;entity_type&gt;/&lt;entity_name&gt;.yaml</tspan></text>
387
+ </g>
388
+ <g
389
+ id="g2084"
390
+ transform="translate(0.60980032,-0.75594985)">
391
+ <rect
392
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a7c2db;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.7077052;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
393
+ id="rect2028"
394
+ width="87.226822"
395
+ height="21.836939"
396
+ x="116.39943"
397
+ y="289.93353"
398
+ ry="1.7865629" />
399
+ <text
400
+ xml:space="preserve"
401
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
402
+ x="160.00832"
403
+ y="302.12936"
404
+ id="text2032"><tspan
405
+ id="tspan2030"
406
+ sodipodi:role="line"
407
+ x="160.00832"
408
+ y="302.12936"
409
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">Compiled Entities</tspan></text>
410
+ </g>
411
+ <rect
412
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a7c2db;fill-opacity:0;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:1.00654888;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.02619566, 4.02619566;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
413
+ id="rect927-9"
414
+ width="392.47116"
415
+ height="84.02282"
416
+ x="-34.702084"
417
+ y="272.37091"
418
+ ry="3.5154123" />
419
+ <text
420
+ id="text2065"
421
+ y="295.68277"
422
+ x="72.44825"
423
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
424
+ xml:space="preserve"><tspan
425
+ id="tspan2063"
426
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#999999;stroke-width:0.26458332px"
427
+ y="295.68277"
428
+ x="72.44825"
429
+ sodipodi:role="line">Compilation</tspan></text>
430
+ <g
431
+ id="g2550"
432
+ transform="translate(0,19.838789)">
433
+ <rect
434
+ ry="1.7865629"
435
+ y="309.01639"
436
+ x="261.92026"
437
+ height="21.836939"
438
+ width="87.226822"
439
+ id="rect2355"
440
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#546e99;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.7077052;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
441
+ <text
442
+ id="text2361"
443
+ y="318.30026"
444
+ x="305.3822"
445
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
446
+ xml:space="preserve"><tspan
447
+ id="tspan2359"
448
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;stroke-width:0.26458332px"
449
+ y="318.30026"
450
+ x="305.3822"
451
+ sodipodi:role="line">Generated files</tspan><tspan
452
+ id="tspan2512"
453
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;stroke-width:0.26458332px"
454
+ y="324.08801"
455
+ x="305.3822"
456
+ sodipodi:role="line">in build subdirectory</tspan></text>
457
+ </g>
458
+ <text
459
+ id="text2065-0"
460
+ y="335.89743"
461
+ x="206.50151"
462
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
463
+ xml:space="preserve"><tspan
464
+ id="tspan2063-1"
465
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#999999;stroke-width:0.26458332px"
466
+ y="335.89743"
467
+ x="206.50151"
468
+ sodipodi:role="line">Detemplatization</tspan></text>
469
+ <text
470
+ xml:space="preserve"
471
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
472
+ x="-28.680702"
473
+ y="283.18988"
474
+ id="text1006-9-9"><tspan
475
+ sodipodi:role="line"
476
+ x="-28.680702"
477
+ y="283.18988"
478
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.63020849px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#999999;stroke-width:0.26458332px"
479
+ id="tspan1026-7">Detailled build process</tspan></text>
480
+ </g>
481
+ </svg>