power_stencil 0.4.0 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9852320333b0476c1e74b31ea327946e3a6d94b9
4
- data.tar.gz: 44de44adfb97d695d8f1e7311566cea9b4ae47a9
3
+ metadata.gz: ab0b5d7b62f1636b7e3c2a17212cd48c1e833cea
4
+ data.tar.gz: 59167fd9220c2f6c6423258f8ad92390536daac6
5
5
  SHA512:
6
- metadata.gz: d867a9e2efa622ecce40dac7446309a1164c1a8b2750855ef4217708e519984c31698a1c567090d5defe630045c056397f9083ebbdfd15b698acdf4a295063b5
7
- data.tar.gz: fc06c6240c6d8f60a4eabe4f0c1a7fc3cb83a9d72c5e2ed7878296466637f8fa03519994f8ec66222f7a4d838e38081f15ab2a593d965be583900fed7a5f59aa
6
+ metadata.gz: 239ae37df2aad36d94d027ca321133240fedf98ad258d44cd3a9bc7118d324e9be5c30c5890bb4177429479884f0659a135bb0ea160c86b7520e9db1df8ccea0
7
+ data.tar.gz: 46099abe943eaab6ae42ca194c32a60e6b10ccf27153e7bd62ba49f84d4b14cb0053656ac97700a648cda9a76183328d4dab7a70d6f667842543268dac12df08
@@ -669,6 +669,8 @@ So you see that if we try to set parent with something wrong, the accessor seems
669
669
 
670
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...
671
671
 
672
+ **:warning: See more advanced features, like reverse methods in the [universe_compiler advanced relations documentation].**
673
+
672
674
  ### has_many
673
675
 
674
676
  Once you know the `has_one` directive, you should not be surprised by the `has_many` directive...
@@ -717,6 +719,8 @@ Which translates at persistence level as:
717
719
  ```
718
720
  Nice !
719
721
 
722
+ **:warning: See more advanced features, like reverse methods in the [universe_compiler advanced relations documentation].**
723
+
720
724
  ### is_array
721
725
 
722
726
  You can define a field as being an array:
@@ -969,4 +973,5 @@ Now you know an entity type is just a regular Ruby class. As such you could add
969
973
  [ActiveRecord]: https://guides.rubyonrails.org/active_record_basics.html "The ultimate ORM"
970
974
  [Ruby On Rails]: https://rubyonrails.org/ "One of the best Web framework"
971
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"
972
977
  [Graphviz]: (https://www.graphviz.org/) "Graph Visualization Software"
@@ -17,6 +17,7 @@
17
17
  # :labelloc: :t
18
18
  # :show_config: false
19
19
  # :file_type: svg
20
+ # :graph_type: :digraph
20
21
  # :node:
21
22
  # :shape: box
22
23
  # :style: filled
@@ -90,6 +90,7 @@
90
90
  :labelloc: :t
91
91
  :show_config: false
92
92
  :file_type: :svg
93
+ :graph_type: :digraph
93
94
  :node:
94
95
  :shape: box
95
96
  :style: filled
@@ -17,6 +17,7 @@
17
17
  # :labelloc: :t
18
18
  # :show_config: false
19
19
  # :file_type: svg
20
+ # :graph_type: :digraph
20
21
  # :node:
21
22
  # :shape: box
22
23
  # :style: filled
@@ -13,10 +13,36 @@ module PowerStencil
13
13
  e.nil? ? entity(type.to_sym, name) : e
14
14
  end
15
15
 
16
- def entity(type, name)
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
- def save(uri = source_uri, force_files_generation: false)
7
- super(uri)
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
@@ -3,7 +3,7 @@ module PowerStencil
3
3
 
4
4
  module NonPersistent
5
5
 
6
- def save(uri = source_uri)
6
+ def save
7
7
  PowerStencil.logger.debug "Won't save '#{self.class.to_s}' because defined as non persistent"
8
8
  self
9
9
  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(uri, force_files_generation: force_files_generation)
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, entity.name.to_s]) do |tmpfile|
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)
@@ -11,9 +11,14 @@ module PowerStencil
11
11
  else
12
12
  entities
13
13
  end
14
- graph_entities_to_file entities_to_process,
15
- output_file_name: filename,
16
- file_type: config[:graphviz][:file_type] do |graph, cache|
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|
17
22
  graph[:label] = config[:graphviz][:label]
18
23
  graph[:labelloc] = config[:graphviz][:labelloc]
19
24
  graph.each_node do |node_name|
@@ -1,3 +1,3 @@
1
1
  module PowerStencil
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.4.5'.freeze
3
3
  end
@@ -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', '>= 0.2.29'
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.3.0', '>= 0.3.2'
30
+ spec.add_dependency 'universe_compiler', '~> 0.4.2'
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.0
4
+ version: 0.4.5
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-15 00:00:00.000000000 Z
11
+ date: 2019-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,9 +57,6 @@ dependencies:
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.2'
62
- - - ">="
63
60
  - !ruby/object:Gem::Version
64
61
  version: 0.2.29
65
62
  type: :runtime
@@ -67,9 +64,6 @@ dependencies:
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
66
  - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '0.2'
72
- - - ">="
73
67
  - !ruby/object:Gem::Version
74
68
  version: 0.2.29
75
69
  - !ruby/object:Gem::Dependency
@@ -92,20 +86,14 @@ dependencies:
92
86
  requirements:
93
87
  - - "~>"
94
88
  - !ruby/object:Gem::Version
95
- version: 0.3.0
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- version: 0.3.2
89
+ version: 0.4.2
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: 0.3.0
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: 0.3.2
96
+ version: 0.4.2
109
97
  - !ruby/object:Gem::Dependency
110
98
  name: pry
111
99
  requirement: !ruby/object:Gem::Requirement
@@ -265,7 +253,7 @@ homepage: https://gitlab.com/tools4devops/power_stencil
265
253
  licenses:
266
254
  - MIT
267
255
  metadata: {}
268
- post_install_message: "\nThank you for installing PowerStencil 0.4.0 !\nFrom the command
256
+ post_install_message: "\nThank you for installing PowerStencil 0.4.5 !\nFrom the command
269
257
  line you can run `power_stencil --help`\nIf your shell is not completing the command:\n
270
258
  \ If you use rbenv: `rbenv rehash`\n If you use zsh : `rehash`\n\nFull documentation
271
259
  here : https://gitlab.com/tools4devops/power_stencil/blob/master/README.md\nFeel