power_stencil 0.4.0 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
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