project_store 0.3.3 → 0.4.0
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 +4 -4
- data/lib/project_store.rb +1 -1
- data/lib/project_store/base.rb +3 -0
- data/lib/project_store/entity/base.rb +18 -5
- data/lib/project_store/entity/property_binder.rb +48 -0
- data/lib/project_store/version.rb +1 -1
- metadata +3 -3
- data/lib/project_store/entity/properties_binder.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 050ec32cc6b6e2ead81816487f0ee4abd535336c
|
4
|
+
data.tar.gz: e5badf7ed14f1de29c4eae3cd9c6b384678f16cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3193091b55fb7133b968e46abe5b7ae065521106d1a3956a06b005a028da53a9e4e930917410a1e85bf3b374d7e65daea5a36793c4b37793930265c5c150c86
|
7
|
+
data.tar.gz: 89495629dcd16bdb23b43181d5ce48df9b84102195476db86d85b1f67a3c174f3e93b740f829a59b24627c770b644d9c0083cbe6929911ceeda758335ac43563
|
data/lib/project_store.rb
CHANGED
@@ -12,7 +12,7 @@ module ProjectStore
|
|
12
12
|
|
13
13
|
end
|
14
14
|
|
15
|
-
require 'project_store/entity/
|
15
|
+
require 'project_store/entity/property_binder'
|
16
16
|
require 'project_store/entity/mandatory_properties'
|
17
17
|
require 'project_store/entity/common_properties'
|
18
18
|
require 'project_store/entity/base'
|
data/lib/project_store/base.rb
CHANGED
@@ -65,6 +65,8 @@ module ProjectStore
|
|
65
65
|
raise PSE, "Entity '#{entity.name}' already defined in file '#{project_entities[entity.name].backing_store.path}'" if project_entities[entity.name]
|
66
66
|
# Adds extra decorator
|
67
67
|
add_decorators entity
|
68
|
+
# Re-check the validity of the object now that it has been decorated
|
69
|
+
entity.valid?(raise_exception: true)
|
68
70
|
entity.backing_store = store
|
69
71
|
# Add to the store index store -> entity list
|
70
72
|
stores[store] << entity
|
@@ -87,6 +89,7 @@ module ProjectStore
|
|
87
89
|
[decorators[decorators_key]]
|
88
90
|
end .each do |decorator|
|
89
91
|
entity.extend decorator
|
92
|
+
entity.mandatory_properties.concat decorator.mandatory_properties
|
90
93
|
logger.debug "Decorated entity '#{entity.name}' with '#{decorator}'"
|
91
94
|
end
|
92
95
|
end
|
@@ -19,15 +19,28 @@ module ProjectStore
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def valid?(raise_exception: false)
|
23
|
+
mandatory_properties.each do |mandatory_property|
|
24
|
+
unless self[mandatory_property]
|
25
|
+
raise_exception ? raise(PSE, "Invalid entity '#{name}'. Missing '#{mandatory_property}' property") : false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def mandatory_properties
|
32
|
+
@mandatory_properties ||= [:type]
|
33
|
+
end
|
22
34
|
|
23
35
|
def basic_checks
|
24
36
|
raise PSE, 'Invalid entity. Missing name' unless name
|
25
37
|
raise PSE, 'Invalid entity. You should not specify a name as it would not be taken in account' if self[:name]
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
38
|
+
|
39
|
+
[:backing_store, :basic_checks, :save, :internal_type, :mandatory_properties, :valid?].each do |forbidden_name|
|
40
|
+
raise PSE, "Invalid entity '#{name}'. Forbidden '#{forbidden_name}' property" if self[forbidden_name]
|
41
|
+
end
|
42
|
+
|
43
|
+
valid?(raise_exception: true)
|
31
44
|
end
|
32
45
|
|
33
46
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module ProjectStore
|
2
|
+
module Entity
|
3
|
+
|
4
|
+
module PropertyBinder
|
5
|
+
|
6
|
+
def yaml_accessor(*yaml_properties)
|
7
|
+
yaml_properties.each do |yaml_property|
|
8
|
+
yaml_reader yaml_property
|
9
|
+
yaml_writer yaml_property
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def yaml_reader(*yaml_properties)
|
14
|
+
yaml_properties.each do |yaml_property|
|
15
|
+
self.class_eval do
|
16
|
+
define_method yaml_property do
|
17
|
+
self[yaml_property]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def yaml_writer(*yaml_properties)
|
24
|
+
yaml_properties.each do |yaml_property|
|
25
|
+
self.class_eval do
|
26
|
+
define_method "#{yaml_property}=" do |val|
|
27
|
+
self[yaml_property] = val
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def mandatory_properties
|
34
|
+
@mandatory_properties ||= []
|
35
|
+
end
|
36
|
+
|
37
|
+
def mandatory_property(*properties)
|
38
|
+
properties.each do |property|
|
39
|
+
mandatory_properties << property
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: project_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent B.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -89,7 +89,7 @@ files:
|
|
89
89
|
- lib/project_store/entity/base.rb
|
90
90
|
- lib/project_store/entity/common_properties.rb
|
91
91
|
- lib/project_store/entity/mandatory_properties.rb
|
92
|
-
- lib/project_store/entity/
|
92
|
+
- lib/project_store/entity/property_binder.rb
|
93
93
|
- lib/project_store/error.rb
|
94
94
|
- lib/project_store/initializer.rb
|
95
95
|
- lib/project_store/utils/basic_logger.rb
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module ProjectStore
|
2
|
-
module Entity
|
3
|
-
|
4
|
-
module PropertyBinder
|
5
|
-
|
6
|
-
def yaml_accessor(*args)
|
7
|
-
args.each do |arg|
|
8
|
-
yaml_reader arg
|
9
|
-
yaml_writer arg
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def yaml_reader(*args)
|
14
|
-
args.each do |arg|
|
15
|
-
self.class_eval do
|
16
|
-
define_method arg do
|
17
|
-
self[arg]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def yaml_writer(*args)
|
24
|
-
args.each do |arg|
|
25
|
-
self.class_eval do
|
26
|
-
define_method "#{arg}=" do |val|
|
27
|
-
self[arg] = val
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|