power_stencil 0.3.9 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +1 -0
- data/README.md +9 -2
- data/doc/entities.md +13 -2
- data/etc/base_commands_definition.yml +5 -0
- data/etc/meta_templates/plugin_seed/etc/plugin_config.yaml +25 -1
- data/etc/meta_templates/plugin_seed/lib/{entity}/{entity}_processor.rb.erb +0 -1
- data/etc/power_stencil.yaml +14 -1
- data/etc/templates/plugin_definition/etc/plugin_config.yaml +25 -1
- data/etc/templates/plugin_definition/lib/{entity}/{entity}_processor.rb.erb +0 -1
- data/etc/templates/project/.ps_project/personal-config.yaml +27 -2
- data/etc/templates/project/.ps_project/versioned-config.yaml +24 -1
- data/lib/power_stencil.rb +1 -0
- data/lib/power_stencil/command_processors/get.rb +13 -3
- data/lib/power_stencil/dsl/entities.rb +27 -1
- data/lib/power_stencil/engine/entities_handling.rb +3 -1
- data/lib/power_stencil/system_entity_definitions/entity_project_common.rb +2 -2
- data/lib/power_stencil/system_entity_definitions/non_persistent.rb +1 -1
- data/lib/power_stencil/system_entity_definitions/simple_exec.rb +3 -3
- data/lib/power_stencil/utils/file_edit.rb +1 -1
- data/lib/power_stencil/utils/graphviz.rb +61 -0
- data/lib/power_stencil/version.rb +1 -1
- data/power_stencil.gemspec +2 -2
- metadata +8 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfcce3efeec28087203d838f24ebef0e9353aaa0
|
4
|
+
data.tar.gz: 80e819c42c39ce84926cd38facd980038888300a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60b1544795adc76d57b7749c14173708fc89bcbb265ee4ad044dd8c539a5d48884c7e38ad8bbbf0904f0a429ff1eb2a3bce0aff41782939b70d4f5f1c20e4682
|
7
|
+
data.tar.gz: afe028a613e6f4e4236fb019b501316202c95bb736a8e1e4090506b9d0feba3ed7b87add6795f38c4df1de8884b2bf166382df45d99dd3e9d1d828c339419102
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -13,6 +13,7 @@ PowerStencil
|
|
13
13
|
- [Creating a `PowerStencil` project](#creating-a-powerstencil-project)
|
14
14
|
- [`PowerStencil` project structure](#powerstencil-project-structure)
|
15
15
|
- [Getting started](#getting-started)
|
16
|
+
- [Project status](#project-status)
|
16
17
|
- [Contributing](#contributing)
|
17
18
|
- [License](#license)
|
18
19
|
- [Code of Conduct](#code-of-conduct)
|
@@ -23,7 +24,7 @@ PowerStencil
|
|
23
24
|
|
24
25
|
`PowerStencil` proposes a radical approach on how to manage your shared configuration.
|
25
26
|
|
26
|
-
Configuration is one of the most complex things to maintain, and anyone who participated in a large scale piece of software or documentation knows how complex it is to maintain, keep consistent and avoid duplication on the long run across the various projects that may share this configuration.
|
27
|
+
**Configuration** is one of the most complex things to maintain, and anyone who participated in a large scale piece of software or documentation knows how complex it is to maintain, **keep consistent and avoid duplication** on the long run across the various projects that may share this configuration.
|
27
28
|
|
28
29
|
From a very high level point of view, the workfow `PowerStencil` proposes looks like:
|
29
30
|
|
@@ -35,6 +36,8 @@ It is a common pattern to introduce a database to manage shared configuration fo
|
|
35
36
|
|
36
37
|
A `PowerStencil` project is composed of a data repository and a pretty standard templating flow to generate whatever is needed by your project or organization and **with `PowerStencil` everything is maintained in a git repository**: data, templates, specific code **without sacrificing on data integrity and relational features**. No more config loss, no more change applied without a full lineage.
|
37
38
|
|
39
|
+
**:information_source: With `PowerStencil` data can either be managed as documents to edit (Yaml) or code !!**. Use the best method depending on what you are doing.
|
40
|
+
|
38
41
|
The `PowerStencil` gem provides the `power_stencil` executable which is a pluggable CLI to:
|
39
42
|
|
40
43
|
- Manage the project data
|
@@ -174,6 +177,9 @@ And course, you may:
|
|
174
177
|
- Read the [F.A.Q.]
|
175
178
|
- See some real world [example use cases].
|
176
179
|
|
180
|
+
# Project status
|
181
|
+
|
182
|
+
Check `PowerStencil` [status in the F.A.Q.].
|
177
183
|
|
178
184
|
# Contributing
|
179
185
|
|
@@ -196,6 +202,7 @@ Everyone interacting in the PowerStencil project’s codebases, issue trackers,
|
|
196
202
|
[plugins]: doc/plugins.md "Plugins in PowerStencil"
|
197
203
|
[example use cases]: doc/example_use_cases.md "Example uses cases using PowerStencil"
|
198
204
|
[F.A.Q.]: doc/faq.md "PowerStencil F.A.Q."
|
205
|
+
[status in the F.A.Q.]: doc/faq.md#what-is-the-status-of-powerstencil- "PowerStencil project status"
|
199
206
|
[code of conduct]: CODE_OF_CONDUCT.md
|
200
207
|
|
201
208
|
<!-- Code links -->
|
@@ -208,4 +215,4 @@ Everyone interacting in the PowerStencil project’s codebases, issue trackers,
|
|
208
215
|
[MIT License]: http://opensource.org/licenses/MIT "The MIT license"
|
209
216
|
[ERB]: https://ruby-doc.org/stdlib-2.6.3/libdoc/erb/rdoc/ERB.html "Quick ERB description"
|
210
217
|
[Haml]: http://haml.info/ "The templating engine for XML-like documents"
|
211
|
-
[Ruby]: https://www.ruby-lang.org "The powerful Ruby language"
|
218
|
+
[Ruby]: https://www.ruby-lang.org "The powerful Ruby language"
|
data/doc/entities.md
CHANGED
@@ -272,7 +272,12 @@ $ power_stencil get base_entity --names-only --regexp
|
|
272
272
|
|
273
273
|
- my_1st_entity
|
274
274
|
```
|
275
|
-
There are 2 other options (`--compiled` and `--scenario`) but they will be covered in the scope of [builds].
|
275
|
+
There are 2 other interesting options (`--compiled` and `--scenario`) but they will be covered in the scope of [builds].
|
276
|
+
|
277
|
+
:information_source: Another very interesting option is `--graph`. **It will generate a [Graphviz] graph of the relations of the entities within the repository.** This is actually provided by the [universe_compiler] Gem. The display of this graph can be completed customized at project level (the 2 versioned and unversioned config files), at entity level (by providing a `#graphviz_label` method in your entities. You'll see later in that document what it means in [creating custom entity types](#creating-custom-entity-types)), and even at plugin level.
|
278
|
+
|
279
|
+
By default the graph is generated in a temporary folder, but of course you can specify the file name using the `--graph-file` options. The default is to generate an svg file (best viewed in a browser as it contains _hover_ over its nodes).
|
280
|
+
|
276
281
|
|
277
282
|
## Creating entities
|
278
283
|
|
@@ -664,6 +669,8 @@ So you see that if we try to set parent with something wrong, the accessor seems
|
|
664
669
|
|
665
670
|
:information_source: The `name` property of the `has_one` directive is optional. If not present the field will be named from the entity_type referenced instead...
|
666
671
|
|
672
|
+
**:warning: See more advanced features, like reverse methods in the [universe_compiler advanced relations documentation].**
|
673
|
+
|
667
674
|
### has_many
|
668
675
|
|
669
676
|
Once you know the `has_one` directive, you should not be surprised by the `has_many` directive...
|
@@ -712,6 +719,8 @@ Which translates at persistence level as:
|
|
712
719
|
```
|
713
720
|
Nice !
|
714
721
|
|
722
|
+
**:warning: See more advanced features, like reverse methods in the [universe_compiler advanced relations documentation].**
|
723
|
+
|
715
724
|
### is_array
|
716
725
|
|
717
726
|
You can define a field as being an array:
|
@@ -963,4 +972,6 @@ Now you know an entity type is just a regular Ruby class. As such you could add
|
|
963
972
|
[Pry]: https://github.com/pry/pry "The awesome Pry console"
|
964
973
|
[ActiveRecord]: https://guides.rubyonrails.org/active_record_basics.html "The ultimate ORM"
|
965
974
|
[Ruby On Rails]: https://rubyonrails.org/ "One of the best Web framework"
|
966
|
-
[universe_compiler]: https://gitlab.com/tools4devops/universe_compiler "The underlying engine to manage entities and compilation !"
|
975
|
+
[universe_compiler]: https://gitlab.com/tools4devops/universe_compiler "The underlying engine to manage entities and compilation !"
|
976
|
+
[universe_compiler advanced relations documentation]: https://gitlab.com/tools4devops/universe_compiler#advanced-relations "Advanced relational features"
|
977
|
+
[Graphviz]: (https://www.graphviz.org/) "Graph Visualization Software"
|
@@ -148,6 +148,11 @@
|
|
148
148
|
:summary: Displays the query result as a graph.
|
149
149
|
:short_aliases:
|
150
150
|
- g
|
151
|
+
graph-file:
|
152
|
+
:type: string
|
153
|
+
:summary: Displays the query result as a graph in the specified file.
|
154
|
+
:long_aliases:
|
155
|
+
- gf
|
151
156
|
shell:
|
152
157
|
:banner: |
|
153
158
|
Opens a shell to interact with entities.
|
@@ -1,4 +1,28 @@
|
|
1
1
|
# This config file provided by the plugin '<%= main_entry_point %>' will be
|
2
2
|
# automatically merged into the global project config
|
3
3
|
|
4
|
-
|
4
|
+
:<%= plugin_name %>.property1: value 1
|
5
|
+
|
6
|
+
# Graphviz configuration
|
7
|
+
#
|
8
|
+
# If you are under Gnome, chances are that you have 'eog' installed
|
9
|
+
# or put you own there. Unless in the path specify full path to it:
|
10
|
+
# node defines the default graphviz node attributes. In customization
|
11
|
+
# each key can be an entity type, that you can fully customize using the
|
12
|
+
# same mechanism
|
13
|
+
|
14
|
+
#:graphviz:
|
15
|
+
# :viewer: eog '%s'
|
16
|
+
# :label: < Repository Entities <br/> >
|
17
|
+
# :labelloc: :t
|
18
|
+
# :show_config: false
|
19
|
+
# :file_type: svg
|
20
|
+
# :graph_type: :digraph
|
21
|
+
# :node:
|
22
|
+
# :shape: box
|
23
|
+
# :style: filled
|
24
|
+
# :fillcolor: grey95
|
25
|
+
# :customizations:
|
26
|
+
# :my_custom_entity:
|
27
|
+
# :shape: circle
|
28
|
+
# :fillcolor: red
|
data/etc/power_stencil.yaml
CHANGED
@@ -82,7 +82,20 @@
|
|
82
82
|
# are automatically discovered and loaded.
|
83
83
|
:project_plugins: []
|
84
84
|
|
85
|
-
|
85
|
+
# Graphviz
|
86
|
+
|
87
|
+
# Customize graphviz properties
|
88
|
+
:graphviz:
|
89
|
+
:label: < Repository Entities <br/> >
|
90
|
+
:labelloc: :t
|
91
|
+
:show_config: false
|
92
|
+
:file_type: :svg
|
93
|
+
:graph_type: :digraph
|
94
|
+
:node:
|
95
|
+
:shape: box
|
96
|
+
:style: filled
|
97
|
+
:fillcolor: grey95
|
98
|
+
:customizations: {}
|
86
99
|
|
87
100
|
# MISC
|
88
101
|
|
@@ -1,4 +1,28 @@
|
|
1
1
|
# This config file provided by the plugin '<%= main_entry_point %>' will be
|
2
2
|
# automatically merged into the global project config
|
3
3
|
|
4
|
-
|
4
|
+
:<%= plugin_name %>.property1: value 1
|
5
|
+
|
6
|
+
# Graphviz configuration
|
7
|
+
#
|
8
|
+
# If you are under Gnome, chances are that you have 'eog' installed
|
9
|
+
# or put you own there. Unless in the path specify full path to it:
|
10
|
+
# node defines the default graphviz node attributes. In customization
|
11
|
+
# each key can be an entity type, that you can fully customize using the
|
12
|
+
# same mechanism
|
13
|
+
|
14
|
+
#:graphviz:
|
15
|
+
# :viewer: eog '%s'
|
16
|
+
# :label: < Repository Entities <br/> >
|
17
|
+
# :labelloc: :t
|
18
|
+
# :show_config: false
|
19
|
+
# :file_type: svg
|
20
|
+
# :graph_type: :digraph
|
21
|
+
# :node:
|
22
|
+
# :shape: box
|
23
|
+
# :style: filled
|
24
|
+
# :fillcolor: grey95
|
25
|
+
# :customizations:
|
26
|
+
# :my_custom_entity:
|
27
|
+
# :shape: circle
|
28
|
+
# :fillcolor: red
|
@@ -2,7 +2,32 @@
|
|
2
2
|
# THIS FILE *IS NOT* MEANT TO BE VERSIONED (and is not by default)
|
3
3
|
# You can use it for any configuration you want to keep local
|
4
4
|
|
5
|
+
# Common configuration
|
6
|
+
|
5
7
|
# :debug: true
|
6
|
-
|
8
|
+
:log-level: 2
|
7
9
|
# :debug-on-stderr: true
|
8
|
-
# :verbose: true
|
10
|
+
# :verbose: true
|
11
|
+
|
12
|
+
# Graphviz configuration
|
13
|
+
#
|
14
|
+
# If you are under Gnome, chances are that you have 'eog' installed
|
15
|
+
# or put you own there. Unless in the path specify full path to it:
|
16
|
+
# node defines the default graphviz node attributes. In customization
|
17
|
+
# each key can be an entity type, that you can fully customize using the
|
18
|
+
# same mechanism
|
19
|
+
|
20
|
+
#:graphviz:
|
21
|
+
# :viewer: eog '%s'
|
22
|
+
# :label: < Repository Entities <br/> >
|
23
|
+
# :labelloc: :t
|
24
|
+
# :show_config: false
|
25
|
+
# :file_type: svg
|
26
|
+
# :node:
|
27
|
+
# :shape: box
|
28
|
+
# :style: filled
|
29
|
+
# :fillcolor: grey95
|
30
|
+
# :customizations:
|
31
|
+
# :my_custom_entity:
|
32
|
+
# :shape: circle
|
33
|
+
# :fillcolor: red
|
@@ -3,4 +3,27 @@
|
|
3
3
|
# You can use it for any configuration you want to keep at repository level
|
4
4
|
|
5
5
|
# If you want to ensure a minimal version number of PowerStencil
|
6
|
-
:min_power_stencil_version: <%= PowerStencil::VERSION %>
|
6
|
+
:min_power_stencil_version: <%= PowerStencil::VERSION %>
|
7
|
+
|
8
|
+
# Graphviz configuration
|
9
|
+
#
|
10
|
+
# If you are under Gnome, chances are that you have 'eog' installed
|
11
|
+
# or put you own there. Unless in the path specify full path to it:
|
12
|
+
# node defines the default graphviz node attributes. In customization
|
13
|
+
# each key can be an entity type, that you can fully customize using the
|
14
|
+
# same mechanism
|
15
|
+
|
16
|
+
#:graphviz:
|
17
|
+
# :viewer: eog '%s'
|
18
|
+
# :label: < Repository Entities <br/> >
|
19
|
+
# :labelloc: :t
|
20
|
+
# :show_config: false
|
21
|
+
# :file_type: svg
|
22
|
+
# :node:
|
23
|
+
# :shape: box
|
24
|
+
# :style: filled
|
25
|
+
# :fillcolor: grey95
|
26
|
+
# :customizations:
|
27
|
+
# :my_custom_entity:
|
28
|
+
# :shape: circle
|
29
|
+
# :fillcolor: red
|
data/lib/power_stencil.rb
CHANGED
@@ -13,6 +13,7 @@ require 'power_stencil/utils/directory_processor'
|
|
13
13
|
require 'power_stencil/utils/secure_require'
|
14
14
|
require 'power_stencil/utils/gem_utils'
|
15
15
|
require 'power_stencil/utils/file_edit'
|
16
|
+
require 'power_stencil/utils/graphviz'
|
16
17
|
|
17
18
|
require 'climatic/script/unimplemented_processor'
|
18
19
|
require 'power_stencil/project/proxy'
|
@@ -7,15 +7,25 @@ module PowerStencil
|
|
7
7
|
include Climatic::Proxy
|
8
8
|
include PowerStencil::Project::Proxy
|
9
9
|
include PowerStencil::CommandProcessors::EntityHelper
|
10
|
+
include PowerStencil::Utils::Graphviz
|
10
11
|
|
11
12
|
def execute
|
12
13
|
targets = targets_from_criteria analyse_extra_params, project.engine.root_universe
|
13
|
-
|
14
|
-
|
14
|
+
if config[:graph] || config[:'graph-file']
|
15
|
+
filename = graph_entities targets, config[:'graph-file']
|
16
|
+
msg = "Graphviz graph saved into '#{filename}'."
|
17
|
+
logger.info msg
|
18
|
+
puts msg
|
19
|
+
if config[:graphviz][:viewer]
|
20
|
+
cmd = config[:graphviz][:viewer] % [filename]
|
21
|
+
`#{cmd}`
|
22
|
+
end
|
23
|
+
else
|
24
|
+
targets.sort{|a, b| a.as_path <=> b.as_path}.each {|target| display_entity target }
|
15
25
|
end
|
16
26
|
end
|
17
|
-
|
18
27
|
end
|
19
28
|
|
20
29
|
end
|
30
|
+
|
21
31
|
end
|
@@ -13,10 +13,36 @@ module PowerStencil
|
|
13
13
|
e.nil? ? entity(type.to_sym, name) : e
|
14
14
|
end
|
15
15
|
|
16
|
-
def entity(
|
16
|
+
def entity(type_or_path, name = nil)
|
17
|
+
type, name = if name.nil?
|
18
|
+
md = type_or_path.match /^(?<type>[^\/]+)\/(?<name>.*)$/
|
19
|
+
if md
|
20
|
+
[md['type'].to_sym, md['name']]
|
21
|
+
else
|
22
|
+
raise PowerStencil::Error, "Invalid entity id: '#{type_or_path}'"
|
23
|
+
end
|
24
|
+
else
|
25
|
+
[type_or_path, name]
|
26
|
+
end
|
17
27
|
PowerStencil.project.engine.entity type, name, @universe
|
18
28
|
end
|
19
29
|
|
30
|
+
# Need to implement a `replace` method which would rename files before...
|
31
|
+
# def edit_entity(type, name)
|
32
|
+
# tmp = Object.new
|
33
|
+
# tmp.extend PowerStencil::Utils::FileEdit
|
34
|
+
# org = entity(type, name)
|
35
|
+
# unless org.nil?
|
36
|
+
# mod = tmp.securely_edit_entity entity(type, name)
|
37
|
+
# raise PowerStencil::Error "You cannot "
|
38
|
+
#
|
39
|
+
#
|
40
|
+
# universe = org.universe
|
41
|
+
# universe.delete org
|
42
|
+
# universe.add mod
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
|
20
46
|
def entities(criterion: nil, value: nil, &filter_block)
|
21
47
|
PowerStencil.project.engine.entities @universe, criterion: criterion, value: value, &filter_block
|
22
48
|
end
|
@@ -45,8 +45,10 @@ module PowerStencil
|
|
45
45
|
def delete_entity(work_universe, type, name, delete_files: false)
|
46
46
|
entity_to_delete = work_universe.get_entity type, name
|
47
47
|
get_user_confirmation prompt: "Are you sure you want delete '#{[type, name].join '/'}' ?" do
|
48
|
+
work_universe.delete(entity_to_delete).each do |impacted_entity, _|
|
49
|
+
impacted_entity.save raise_error: false, force_save: true
|
50
|
+
end
|
48
51
|
entity_to_delete.delete force_files_deletion: delete_files
|
49
|
-
entity_to_delete.universe = nil
|
50
52
|
entity_to_delete
|
51
53
|
end
|
52
54
|
end
|
@@ -3,8 +3,8 @@ module PowerStencil
|
|
3
3
|
|
4
4
|
module EntityProjectCommon
|
5
5
|
|
6
|
-
|
7
|
-
super(
|
6
|
+
def save(uri = source_uri, raise_error: true, force_save: false, force_files_generation: false )
|
7
|
+
super(source_uri, raise_error: raise_error, force_save: force_save)
|
8
8
|
unless PowerStencil.project.entity_type_templates[type].nil?
|
9
9
|
PowerStencil.project.generate_entity_dir_for_entity self, force: force_files_generation
|
10
10
|
end
|
@@ -26,10 +26,10 @@ module PowerStencil
|
|
26
26
|
super(raise_error: raise_error)
|
27
27
|
end
|
28
28
|
|
29
|
-
def save(uri = source_uri, force_files_generation: false)
|
30
|
-
valid?
|
29
|
+
def save(uri = source_uri, raise_error: true, force_save: false, force_files_generation: false )
|
30
|
+
valid? raise_error: raise_error
|
31
31
|
self.post_process.save
|
32
|
-
super
|
32
|
+
super
|
33
33
|
end
|
34
34
|
|
35
35
|
def delete(force_files_deletion: false)
|
@@ -25,7 +25,7 @@ module PowerStencil
|
|
25
25
|
def securely_edit_entity(entity, &modifications_validation_block)
|
26
26
|
initial_uri = entity.source_uri
|
27
27
|
modified_entity = nil
|
28
|
-
Tempfile.create([entity.type.to_s
|
28
|
+
Tempfile.create(["#{entity.type.to_s}_#{entity.name.to_s}", '.yaml']) do |tmpfile|
|
29
29
|
tmpfile.puts entity.to_yaml
|
30
30
|
tmpfile.flush
|
31
31
|
securely_edit_file(tmpfile, &modifications_validation_block)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module PowerStencil
|
2
|
+
module Utils
|
3
|
+
|
4
|
+
module Graphviz
|
5
|
+
|
6
|
+
include UniverseCompiler::Utils::Graphviz
|
7
|
+
|
8
|
+
def graph_entities(entities, filename = nil)
|
9
|
+
entities_to_process = unless config[:graphviz][:show_config]
|
10
|
+
entities.reject {|e| e.type == :project_config}
|
11
|
+
else
|
12
|
+
entities
|
13
|
+
end
|
14
|
+
|
15
|
+
graph_options = {
|
16
|
+
output_file_name: filename,
|
17
|
+
graph_type: config[:graphviz][:graph_type],
|
18
|
+
file_type: config[:graphviz][:file_type]
|
19
|
+
}
|
20
|
+
|
21
|
+
graph_entities_to_file entities_to_process, graph_options do |graph, cache|
|
22
|
+
graph[:label] = config[:graphviz][:label]
|
23
|
+
graph[:labelloc] = config[:graphviz][:labelloc]
|
24
|
+
graph.each_node do |node_name|
|
25
|
+
node = graph.get_node node_name
|
26
|
+
entity = cache[:by_node][node]
|
27
|
+
|
28
|
+
# Set default node attributes
|
29
|
+
config[:graphviz][:node].each do |k,v|
|
30
|
+
node[k] = v
|
31
|
+
end
|
32
|
+
fields_to_display = {}
|
33
|
+
|
34
|
+
# Define node tooltip
|
35
|
+
entity.fields.keys.each do |field_name|
|
36
|
+
constraints = entity.class.fields_constraints[field_name]
|
37
|
+
unless constraints.nil?
|
38
|
+
# Remove relations as they are represented as edges
|
39
|
+
next if constraints.keys.include? :has_one
|
40
|
+
next if constraints.keys.include? :has_many
|
41
|
+
end
|
42
|
+
fields_to_display[field_name] = entity[field_name]
|
43
|
+
end
|
44
|
+
node[:tooltip] = fields_to_display.to_yaml
|
45
|
+
|
46
|
+
# specific customizations
|
47
|
+
if config[:graphviz][:customizations][entity.type]
|
48
|
+
config[:graphviz][:customizations][entity.type].each do |k,v|
|
49
|
+
node[k] = v
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
data/power_stencil.gemspec
CHANGED
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
26
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
27
|
|
28
|
-
spec.add_dependency 'climatic', '~> 0.2
|
28
|
+
spec.add_dependency 'climatic', '~> 0.2.29'
|
29
29
|
spec.add_dependency 'dir_glob_ignore', '~> 0.3'
|
30
|
-
spec.add_dependency 'universe_compiler', '~> 0.
|
30
|
+
spec.add_dependency 'universe_compiler', '~> 0.4.1'
|
31
31
|
spec.add_dependency 'pry'
|
32
32
|
|
33
33
|
spec.post_install_message = %Q{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_stencil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent B.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,20 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 0.2.28
|
61
|
+
version: 0.2.29
|
65
62
|
type: :runtime
|
66
63
|
prerelease: false
|
67
64
|
version_requirements: !ruby/object:Gem::Requirement
|
68
65
|
requirements:
|
69
66
|
- - "~>"
|
70
67
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 0.2.28
|
68
|
+
version: 0.2.29
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: dir_glob_ignore
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,20 +86,14 @@ dependencies:
|
|
92
86
|
requirements:
|
93
87
|
- - "~>"
|
94
88
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
96
|
-
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: 0.2.16
|
89
|
+
version: 0.4.1
|
99
90
|
type: :runtime
|
100
91
|
prerelease: false
|
101
92
|
version_requirements: !ruby/object:Gem::Requirement
|
102
93
|
requirements:
|
103
94
|
- - "~>"
|
104
95
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: 0.2.16
|
96
|
+
version: 0.4.1
|
109
97
|
- !ruby/object:Gem::Dependency
|
110
98
|
name: pry
|
111
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,6 +244,7 @@ files:
|
|
256
244
|
- lib/power_stencil/utils/file_edit.rb
|
257
245
|
- lib/power_stencil/utils/file_helper.rb
|
258
246
|
- lib/power_stencil/utils/gem_utils.rb
|
247
|
+
- lib/power_stencil/utils/graphviz.rb
|
259
248
|
- lib/power_stencil/utils/secure_require.rb
|
260
249
|
- lib/power_stencil/utils/semantic_version.rb
|
261
250
|
- lib/power_stencil/version.rb
|
@@ -264,7 +253,7 @@ homepage: https://gitlab.com/tools4devops/power_stencil
|
|
264
253
|
licenses:
|
265
254
|
- MIT
|
266
255
|
metadata: {}
|
267
|
-
post_install_message: "\nThank you for installing PowerStencil 0.
|
256
|
+
post_install_message: "\nThank you for installing PowerStencil 0.4.4 !\nFrom the command
|
268
257
|
line you can run `power_stencil --help`\nIf your shell is not completing the command:\n
|
269
258
|
\ If you use rbenv: `rbenv rehash`\n If you use zsh : `rehash`\n\nFull documentation
|
270
259
|
here : https://gitlab.com/tools4devops/power_stencil/blob/master/README.md\nFeel
|