power_stencil 0.6.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +2 -0
  3. data/README.md +3 -7
  4. data/doc/entities.md +8 -8
  5. data/doc/images/power-stencil-entity-creation.svg +247 -114
  6. data/doc/templates.md +22 -18
  7. data/etc/base_commands_definition.yml +14 -0
  8. data/etc/power_stencil.yaml +7 -1
  9. data/etc/templates/project/.zzzgitignore.erb +8 -3
  10. data/lib/power_stencil.rb +1 -0
  11. data/lib/power_stencil/command_processors/create.rb +6 -5
  12. data/lib/power_stencil/command_processors/delete.rb +23 -15
  13. data/lib/power_stencil/command_processors/edit.rb +4 -2
  14. data/lib/power_stencil/command_processors/plugin.rb +6 -2
  15. data/lib/power_stencil/command_processors/shell.rb +10 -3
  16. data/lib/power_stencil/dsl/entities.rb +0 -16
  17. data/lib/power_stencil/engine/entities_handling.rb +1 -1
  18. data/lib/power_stencil/engine/project_engine.rb +5 -9
  19. data/lib/power_stencil/plugins/templates.rb +2 -2
  20. data/lib/power_stencil/project/base.rb +15 -12
  21. data/lib/power_stencil/project/create.rb +23 -2
  22. data/lib/power_stencil/project/git.rb +75 -0
  23. data/lib/power_stencil/project/info.rb +1 -1
  24. data/lib/power_stencil/project/paths.rb +22 -6
  25. data/lib/power_stencil/project/plugins.rb +1 -1
  26. data/lib/power_stencil/project/templates.rb +15 -22
  27. data/lib/power_stencil/system_entity_definitions/all.rb +1 -1
  28. data/lib/power_stencil/system_entity_definitions/buildable.rb +1 -1
  29. data/lib/power_stencil/system_entity_definitions/entity_override.rb +5 -0
  30. data/lib/power_stencil/system_entity_definitions/entity_project_common.rb +12 -4
  31. data/lib/power_stencil/system_entity_definitions/{has_associated_files.rb → entity_templates.rb} +2 -2
  32. data/lib/power_stencil/system_entity_definitions/project_config.rb +1 -1
  33. data/lib/power_stencil/system_entity_definitions/project_entity.rb +6 -0
  34. data/lib/power_stencil/system_entity_definitions/simple_exec.rb +2 -2
  35. data/lib/power_stencil/version.rb +1 -1
  36. data/power_stencil.gemspec +1 -0
  37. metadata +19 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40a1c784720fe14e0e62ee24a66c24d0780d6165
4
- data.tar.gz: 4eabaf0235839fe34f87ca9d2c3b59cd9c078b00
3
+ metadata.gz: 75be0351239fd3b94c0cbb5b3482ed98172c3119
4
+ data.tar.gz: ffc7878ce34439f0947a1b568eb56eb07c746514
5
5
  SHA512:
6
- metadata.gz: 352caf7d55a27af71ad39a8e5c1a201943216ae8a685bb32b8592431a7fdccb9365fdc9f0ef636e06a59636c2941e19c1ec42f861a23bf7231b2a1401e2fc1bc
7
- data.tar.gz: 97a20691531c85b72e243b8cc6376da7142924546209fe6713f9a5393c4885f8105c6d48fe3b2d2dcd07e1fabc1c37cc0c62ecb8d2ad3778e6e624d28ec345c9
6
+ metadata.gz: 97ea218bf8fe32f520732d741221984e2e5a4e2f50712aac9f389209e2cedb88a7e550bbe4b3284fb5bdcd0aa8492f5278a2869b2277e8d42497c7702998c921
7
+ data.tar.gz: e7a94779f26e44892aaf80d76f4c12a53517017896a48718096c4b03178918424407a22c338fa41c5b7672ac095c603235c81a2751ae8c7d4e02c13bfc45bf89
@@ -3,6 +3,8 @@ image: "ruby:2.3"
3
3
  before_script:
4
4
  - gem install bundler --no-document
5
5
  - bundle install --jobs $(nproc) "${FLAGS[@]}"
6
+ - git config --global user.email "noone@nowhere.org"
7
+ - git config --global user.name "Testman"
6
8
 
7
9
  rspec:
8
10
  script:
data/README.md CHANGED
@@ -75,6 +75,8 @@ Then you can install the `PowerStencil` gem by issuing the usual:
75
75
 
76
76
  $ gem install power_stencil
77
77
 
78
+ :hand: It is **strongly** advised to have `git` installed on your system, as `PowerStencil` is integrated with `git` to provide a better user experience.
79
+
78
80
  If you want to create [Graphviz] graphs, you probably may want to install it for your system. If you are using an _apt-based_ system like Ubuntu or Debian it may probably be as simple as:
79
81
 
80
82
  $ sudo apt install graphviz
@@ -139,13 +141,7 @@ Once the project created, if you are anywhere within the project tree, you don't
139
141
 
140
142
  **:information_source: The rest of this documentation will assume you are at the root of this created project.**
141
143
 
142
- **:information_source: Of course, once you've been creating a new project, you should version it with Git:**
143
-
144
- $ git init
145
- $ git add .
146
- $ git commit -a -m 'Initial commit'
147
-
148
- This will allow you to track any change resulting of your interactions with `power_stencil` command line.
144
+ **:information_source: If you have `git` installed on your system, **the repository of the newly created project has been automatically turned into a git repository. And any action done through the `power_stencil` command-line will be automatically tracked by `git`**. Only things you will do outside of the `power_stencil` command-line (adding or modifying templates, creating or modifying entity types... any manual action) will require a user action to make `git` take it in account. You can completely de-activate this behaviour if you want to fully manage things by yourself by adding `:no-git: true` in the `.ps_project/versioned-config.yaml`, yet there is no good reason for that... Unless you know what you are doing, you should keep the default settings.
149
145
 
150
146
  ## `PowerStencil` project structure
151
147
 
@@ -87,19 +87,19 @@ It provides a lot of information about the project, but let's focus on the `Enti
87
87
 
88
88
  You can see here above that only 6 types of entity are defined by default in a brand new created `PowerStencil` project. You can find them below with some of their core features:
89
89
 
90
- | entity type | system | persisted | buildable | has associated files |
91
- |-------------|:------:|:---------:|:---------:|:--------------------:|
90
+ | entity type | system | persisted | buildable | provides templates |
91
+ |-------------|:------:|:---------:|:---------:|:------------------:|
92
92
  |base_entity||X
93
93
  |entity_override||X
94
- |plugin_definition|X
94
+ |plugin_definition|X|||X
95
95
  |process_descriptor||X
96
96
  |project_config|X
97
97
  |simple_exec||X|X|X
98
98
 
99
- - You should not care about _system_ entities unless you are developing features in `PowerStencil`.
100
- - By default any entity type, including those you may create, is _persistent_.
101
- - A _buildable_ entity is an entity you can run `power_stencil build` against. More about this in the [builds] part.
102
- - When an entity _has associated files_, it means its [templates] are in `<project_root>/<entity_type>/<entity_name>` folder. We'll talk about this more in depth in the [templates] and [builds] part.
99
+ - You should not care about _system_ entity types unless you are developing features in `PowerStencil`. You cannot instantiate any of them like others.
100
+ - By default any entity type, including those you may instantiate, is _persistent_.
101
+ - A _buildable_ entity type is an entity type you can run `power_stencil build` against its instantiated entities. More about this in the [builds] part.
102
+ - When an entity type _provides templates_, it means its [templates] will generated in `<project_root>/templates/<entity_type>/<entity_name>` folder when you create an entity of this type. We'll talk about this more in depth in the [templates] and [builds] part.
103
103
 
104
104
  On top of this `power_stencil info` brings you information about the actual Ruby classes implementing those entity types.
105
105
 
@@ -354,9 +354,9 @@ Of course you can then delete the entity like any other...
354
354
  ```shell
355
355
  $ power_stencil delete base_entity/dev_entity --auto
356
356
  Deleted 'base_entity/dev_entity'
357
-
358
357
  ```
359
358
 
359
+ :hand: As opposed to versioned entities, the templates are not generated in `<project_root>/templates/<entity_type>/<entity_name>` but instead in `<project_root>/unversioned-templates/<entity_type>/<entity_name>`. Anything below `<project_root>/unversioned-templates`, as its name suggests will not be versioned...
360
360
 
361
361
  ## Updating entities
362
362
 
@@ -9,9 +9,9 @@
9
9
  xmlns="http://www.w3.org/2000/svg"
10
10
  xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
11
  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
- width="246.6871mm"
13
- height="153.63528mm"
14
- viewBox="0 0 246.68711 153.63528"
12
+ width="397.49957mm"
13
+ height="153.6353mm"
14
+ viewBox="0 0 397.49958 153.6353"
15
15
  version="1.1"
16
16
  id="svg8"
17
17
  inkscape:version="0.92.3 (2405546, 2018-03-11)"
@@ -20,6 +20,31 @@
20
20
  id="title1457">PowerStencil entity creation flow description</title>
21
21
  <defs
22
22
  id="defs2">
23
+ <marker
24
+ inkscape:stockid="Arrow1Send"
25
+ orient="auto"
26
+ refY="0"
27
+ refX="0"
28
+ id="marker1186"
29
+ style="overflow:visible"
30
+ inkscape:isstock="true">
31
+ <path
32
+ id="path1184"
33
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
34
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1"
35
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
36
+ inkscape:connector-curvature="0" />
37
+ </marker>
38
+ <inkscape:path-effect
39
+ effect="bspline"
40
+ id="path-effect1111"
41
+ is_visible="true"
42
+ weight="33.333333"
43
+ steps="2"
44
+ helper_size="0"
45
+ apply_no_weight="true"
46
+ apply_with_weight="true"
47
+ only_selected="false" />
23
48
  <marker
24
49
  inkscape:isstock="true"
25
50
  style="overflow:visible"
@@ -27,7 +52,8 @@
27
52
  refX="0"
28
53
  refY="0"
29
54
  orient="auto"
30
- inkscape:stockid="Arrow1Send">
55
+ inkscape:stockid="Arrow1Send"
56
+ inkscape:collect="always">
31
57
  <path
32
58
  inkscape:connector-curvature="0"
33
59
  transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
@@ -86,6 +112,31 @@
86
112
  apply_no_weight="true"
87
113
  apply_with_weight="true"
88
114
  only_selected="false" />
115
+ <marker
116
+ inkscape:isstock="true"
117
+ style="overflow:visible"
118
+ id="marker1231-8"
119
+ refX="0"
120
+ refY="0"
121
+ orient="auto"
122
+ inkscape:stockid="Arrow1Send">
123
+ <path
124
+ inkscape:connector-curvature="0"
125
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
126
+ style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1"
127
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
128
+ id="path1229-7" />
129
+ </marker>
130
+ <inkscape:path-effect
131
+ only_selected="false"
132
+ apply_with_weight="true"
133
+ apply_no_weight="true"
134
+ helper_size="0"
135
+ steps="2"
136
+ weight="33.333333"
137
+ is_visible="true"
138
+ id="path-effect1227-4"
139
+ effect="bspline" />
89
140
  </defs>
90
141
  <sodipodi:namedview
91
142
  id="base"
@@ -95,8 +146,8 @@
95
146
  inkscape:pageopacity="0.0"
96
147
  inkscape:pageshadow="2"
97
148
  inkscape:zoom="0.7"
98
- inkscape:cx="530.80204"
99
- inkscape:cy="231.40443"
149
+ inkscape:cx="691.24662"
150
+ inkscape:cy="306.60718"
100
151
  inkscape:document-units="mm"
101
152
  inkscape:current-layer="layer1"
102
153
  showgrid="false"
@@ -130,37 +181,44 @@
130
181
  inkscape:label="Calque 1"
131
182
  inkscape:groupmode="layer"
132
183
  id="layer1"
133
- transform="translate(13.469479,-90.846419)">
184
+ transform="translate(113.48204,-90.846423)">
185
+ <path
186
+ style="opacity:1;vector-effect:none;fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.88228047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1186)"
187
+ d="m -48.999241,171.83879 c 60.854543,0 121.708712,0 182.562501,0"
188
+ id="path1109"
189
+ inkscape:connector-curvature="0"
190
+ inkscape:path-effect="#path-effect1111"
191
+ inkscape:original-d="m -48.999241,171.83879 c 60.854543,-2.6e-4 121.708712,-2.6e-4 182.562501,0" />
134
192
  <rect
135
- 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"
193
+ 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.29813564;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.19254323, 5.19254323;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
136
194
  id="rect927"
137
- width="225.68056"
138
- height="132.62874"
139
- x="-2.9662042"
140
- y="101.34969"
141
- ry="5.5490241" />
195
+ width="376.20145"
196
+ height="132.33716"
197
+ x="-102.83297"
198
+ y="101.49549"
199
+ ry="5.5368247" />
142
200
  <path
143
- inkscape:original-d="m 66.030921,191.14748 c 20.219814,-6.66165 40.439659,-13.32303 60.659529,-19.98415"
201
+ inkscape:original-d="m 66.030921,191.14748 c 19.950452,-6.45185 39.900939,-12.90345 59.851439,-19.35479"
144
202
  inkscape:path-effect="#path-effect1227"
145
203
  inkscape:connector-curvature="0"
146
204
  id="path1225"
147
- d="m 66.030921,191.14748 c 20.219896,-6.6614 40.439739,-13.32278 60.659529,-19.98415"
148
- style="fill:#4d4d4d;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.88228047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1231)" />
205
+ d="M 66.030921,191.14748 C 85.98145,184.69587 105.93194,178.24427 125.88236,171.79269"
206
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.84002388;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1231)" />
149
207
  <path
150
- style="fill:#4d4d4d;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.88228047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
151
- d="m 66.030921,151.17918 c 20.219896,6.6614 40.439739,13.32278 60.659529,19.98415"
208
+ style="fill:#4d4d4d;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.88874269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
209
+ d="m 65.996854,151.12108 c 19.962565,6.79369 39.925066,13.58735 59.887526,20.381"
152
210
  id="path1079"
153
211
  inkscape:connector-curvature="0"
154
212
  inkscape:path-effect="#path-effect1081"
155
- inkscape:original-d="m 66.030921,151.17918 c 20.219814,6.66165 40.439659,13.32303 60.659529,19.98415" />
213
+ inkscape:original-d="m 65.996854,151.12108 c 19.962479,6.79394 39.924986,13.5876 59.887526,20.381" />
156
214
  <text
157
215
  xml:space="preserve"
158
216
  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"
159
- x="5.2615628"
217
+ x="-92.926559"
160
218
  y="110.55138"
161
219
  id="text1006-9"><tspan
162
220
  sodipodi:role="line"
163
- x="5.2615628"
221
+ x="-92.926559"
164
222
  y="110.55138"
165
223
  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"
166
224
  id="tspan1026">Entity creation process (power_stencil create)</tspan></text>
@@ -234,141 +292,216 @@
234
292
  </g>
235
293
  </g>
236
294
  <g
237
- id="g1265">
295
+ id="g1039"
296
+ transform="translate(-98.27381,-31.074538)">
238
297
  <g
239
- transform="translate(-81.557176,70.303571)"
240
- id="g1087">
298
+ id="g1026">
241
299
  <rect
242
300
  ry="1.7865629"
243
- y="132.60976"
244
- x="87.683319"
301
+ y="202.91333"
302
+ x="6.126143"
245
303
  height="21.836939"
246
304
  width="87.226822"
247
305
  id="rect933"
248
306
  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" />
249
307
  <text
250
308
  id="text937"
251
- y="138.95341"
252
- x="93.796112"
309
+ y="209.25699"
310
+ x="12.238936"
253
311
  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"
254
312
  xml:space="preserve"><tspan
255
313
  id="tspan941"
256
314
  style="stroke-width:0.26458332px"
257
- y="138.95341"
258
- x="93.796112"
315
+ y="209.25699"
316
+ x="12.238936"
259
317
  sodipodi:role="line">templates-templates</tspan><tspan
260
318
  id="tspan1007"
261
319
  style="stroke-width:0.26458332px"
262
- y="144.74118"
263
- x="93.796112"
320
+ y="215.04475"
321
+ x="12.238936"
264
322
  sodipodi:role="line">within project in </tspan><tspan
265
323
  id="tspan1009"
266
324
  style="stroke-width:0.26458332px"
267
- y="150.52893"
268
- x="93.796112"
325
+ y="220.8325"
326
+ x="12.238936"
269
327
  sodipodi:role="line">.ps_project/templates-templates</tspan></text>
270
328
  </g>
271
329
  <g
272
- transform="translate(-63.122026,6.511274)"
273
- id="g1068">
330
+ id="g1019">
274
331
  <rect
275
332
  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"
276
333
  id="rect1058"
277
334
  width="87.226822"
278
335
  height="21.836939"
279
- x="69.248169"
280
- y="174.56511"
336
+ x="6.126143"
337
+ y="181.07639"
281
338
  ry="1.7865629" />
282
339
  <text
283
340
  id="text1017"
284
- y="183.84898"
285
- x="112.80054"
341
+ y="190.36026"
342
+ x="49.678513"
286
343
  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"
287
344
  xml:space="preserve"><tspan
288
345
  id="tspan1013"
289
346
  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"
290
- y="183.84898"
291
- x="112.80054"
347
+ y="190.36026"
348
+ x="49.678513"
292
349
  sodipodi:role="line">Custom Project</tspan><tspan
293
350
  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"
294
- y="189.63675"
295
- x="112.80054"
351
+ y="196.14803"
352
+ x="49.678513"
296
353
  sodipodi:role="line"
297
354
  id="tspan1015">Entity Types</tspan></text>
298
355
  </g>
299
356
  </g>
300
357
  <g
301
- id="g1074-5"
302
- transform="translate(54.418475,47.33271)">
358
+ id="g1107">
303
359
  <g
304
- id="g911">
305
- <g
306
- id="g1149"
307
- transform="translate(-15.411332,-8.7791363)"
308
- style="">
309
- <rect
310
- 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"
311
- id="rect1139"
312
- width="87.226822"
313
- height="21.836939"
314
- x="87.683319"
315
- y="132.60976"
316
- ry="1.7865629" />
317
- <text
318
- xml:space="preserve"
319
- 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"
320
- x="93.796112"
321
- y="138.95341"
322
- id="text1147"><tspan
323
- sodipodi:role="line"
324
- x="93.796112"
325
- y="138.95341"
326
- style="stroke-width:0.26458332px"
327
- id="tspan1143">templates in project in </tspan><tspan
328
- sodipodi:role="line"
329
- x="93.796112"
330
- y="144.74118"
331
- style="stroke-width:0.26458332px"
332
- id="tspan1145">&lt;entity_type&gt;/&lt;entity_name&gt;</tspan></text>
333
- </g>
334
- <g
335
- id="g892">
336
- <rect
337
- ry="1.7865629"
338
- y="101.99368"
339
- x="72.27198"
340
- height="21.836939"
341
- width="87.226822"
342
- id="rect1062-3"
343
- 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" />
344
- <text
345
- id="text819-3"
346
- y="110.46727"
347
- x="115.78365"
348
- 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"
349
- xml:space="preserve"><tspan
350
- 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"
351
- y="110.46727"
352
- x="115.78365"
353
- sodipodi:role="line"
354
- id="tspan951-7">Project Entities</tspan></text>
355
- <text
356
- xml:space="preserve"
357
- 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"
358
- x="115.86675"
359
- y="115.04259"
360
- id="text882"><tspan
361
- sodipodi:role="line"
362
- id="tspan880"
363
- x="116.30076"
364
- y="115.04259"
365
- 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
366
- sodipodi:role="line"
367
- x="115.86675"
368
- y="118.45071"
369
- 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"
370
- id="tspan884">.ps_project/entities/&lt;entity_type&gt;/&lt;entity_name&gt;.yaml</tspan></text>
371
- </g>
360
+ id="g1088">
361
+ <rect
362
+ ry="2.7240984"
363
+ y="171.79269"
364
+ x="125.88236"
365
+ height="33.296322"
366
+ width="137.29633"
367
+ id="rect1139"
368
+ 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.70367658;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" />
369
+ <text
370
+ id="text1147"
371
+ y="177.50699"
372
+ x="132.80325"
373
+ 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"
374
+ xml:space="preserve"><tspan
375
+ id="tspan1143"
376
+ style="stroke-width:0.26458332px"
377
+ y="177.50699"
378
+ x="132.80325"
379
+ sodipodi:role="line">templates for <tspan
380
+ style="font-weight:bold"
381
+ id="tspan924">versioned</tspan> entities in:</tspan><tspan
382
+ id="tspan1145"
383
+ style="stroke-width:0.26458332px"
384
+ y="183.29475"
385
+ x="132.80325"
386
+ sodipodi:role="line">templates/&lt;entity_type&gt;/&lt;entity_name&gt;</tspan><tspan
387
+ style="stroke-width:0.26458332px"
388
+ y="189.0825"
389
+ x="132.80325"
390
+ sodipodi:role="line"
391
+ id="tspan922" /><tspan
392
+ style="stroke-width:0.26458332px"
393
+ y="194.87027"
394
+ x="132.80325"
395
+ sodipodi:role="line"
396
+ id="tspan918">templates for <tspan
397
+ style="font-weight:bold"
398
+ id="tspan926">unversioned</tspan> entities in:</tspan><tspan
399
+ style="stroke-width:0.26458332px"
400
+ y="200.65804"
401
+ x="132.80325"
402
+ sodipodi:role="line"
403
+ id="tspan920">unversioned-templates/&lt;entity_type&gt;/&lt;entity_name&gt;</tspan></text>
404
+ </g>
405
+ <g
406
+ id="g1077">
407
+ <rect
408
+ 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"
409
+ id="rect1062-3"
410
+ width="136.91151"
411
+ height="32.911507"
412
+ x="125.88438"
413
+ y="138.59058"
414
+ ry="2.6926153" />
415
+ <text
416
+ xml:space="preserve"
417
+ 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"
418
+ x="195.23486"
419
+ y="149.33342"
420
+ id="text819-3"><tspan
421
+ id="tspan951-7"
422
+ sodipodi:role="line"
423
+ x="195.23486"
424
+ y="149.33342"
425
+ 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">Project Entities</tspan></text>
426
+ <text
427
+ id="text882"
428
+ y="159.20033"
429
+ x="195.30766"
430
+ 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"
431
+ xml:space="preserve"><tspan
432
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;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"
433
+ y="159.20033"
434
+ x="195.98152"
435
+ id="tspan880"
436
+ sodipodi:role="line">Stored in </tspan><tspan
437
+ id="tspan884"
438
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;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"
439
+ y="162.99988"
440
+ x="195.30766"
441
+ sodipodi:role="line">.ps_project/entities/&lt;entity_type&gt;/&lt;entity_name&gt;.yaml</tspan></text>
442
+ </g>
443
+ </g>
444
+ <g
445
+ id="g1069"
446
+ transform="translate(-1.0213384,-111.88095)">
447
+ <g
448
+ id="g1056">
449
+ <rect
450
+ ry="1.7865629"
451
+ y="315.04086"
452
+ x="7.0617967"
453
+ height="21.836939"
454
+ width="87.226822"
455
+ id="rect933-7"
456
+ 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" />
457
+ <text
458
+ id="text937-8"
459
+ y="321.38452"
460
+ x="13.17459"
461
+ 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"
462
+ xml:space="preserve"><tspan
463
+ id="tspan941-5"
464
+ style="stroke-width:0.26458332px"
465
+ y="321.38452"
466
+ x="13.17459"
467
+ sodipodi:role="line">templates-templates</tspan><tspan
468
+ id="tspan1009-3"
469
+ style="stroke-width:0.26458332px"
470
+ y="327.17227"
471
+ x="13.17459"
472
+ sodipodi:role="line">within plugins. Path is </tspan><tspan
473
+ style="stroke-width:0.26458332px"
474
+ y="332.96005"
475
+ x="13.17459"
476
+ sodipodi:role="line"
477
+ id="tspan1043">customizable (see plugins doc)</tspan></text>
478
+ </g>
479
+ <g
480
+ id="g1049">
481
+ <rect
482
+ 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"
483
+ id="rect1058-8"
484
+ width="87.226822"
485
+ height="21.836939"
486
+ x="7.0617967"
487
+ y="293.20392"
488
+ ry="1.7865629" />
489
+ <text
490
+ id="text1017-3"
491
+ y="302.48779"
492
+ x="50.614166"
493
+ 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"
494
+ xml:space="preserve"><tspan
495
+ id="tspan1013-7"
496
+ 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"
497
+ y="302.48779"
498
+ x="50.614166"
499
+ sodipodi:role="line">Plugins</tspan><tspan
500
+ 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"
501
+ y="308.27554"
502
+ x="50.614166"
503
+ sodipodi:role="line"
504
+ id="tspan1015-9">Entity Types</tspan></text>
372
505
  </g>
373
506
  </g>
374
507
  </g>