project_store 0.6.7 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/project_store/base.rb +7 -8
- data/lib/project_store/editing.rb +10 -8
- data/lib/project_store/entity/base.rb +24 -5
- data/lib/project_store/entity/builder.rb +1 -0
- data/lib/project_store/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68bf885a3948fba46055ea4b967e0ac9d313cc67
|
4
|
+
data.tar.gz: bba7870f3eda812689c6fa811549c8511285d5e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 952a0808722a918c1b8c9a01c604d5818e4a66c2ecff42fc631311dd2b174f3be8f1e0aef34b5a36c4ab7ef864dee6021788573ae3909452a100a9cff4ab4339
|
7
|
+
data.tar.gz: ddf6e3cb95f019dee1a593c44a992be6ec194300fcf2f0c108f08821dbbacbf5c7debfade8690c1fc7bcd6e0982da49f8768ed6e43afe0f39de0b384c9c8bef1
|
data/lib/project_store/base.rb
CHANGED
@@ -21,7 +21,7 @@ module ProjectStore
|
|
21
21
|
self.decorators = {}
|
22
22
|
end
|
23
23
|
|
24
|
-
def load_entities
|
24
|
+
def load_entities(&block)
|
25
25
|
Dir.glob(File.join(path, '*.yaml')).each do |file|
|
26
26
|
logger.debug "Found store file '#{file}'"
|
27
27
|
begin
|
@@ -32,15 +32,14 @@ module ProjectStore
|
|
32
32
|
begin
|
33
33
|
logger.debug "Loading '#{entity_name}' entity."
|
34
34
|
entity = store[entity_name]
|
35
|
-
|
36
|
-
decorate_and_index_entity entity_name, entity, store
|
35
|
+
decorate_and_index_entity entity_name, entity, store, &block
|
37
36
|
rescue => e
|
38
37
|
if continue_on_error
|
39
|
-
logger.
|
38
|
+
logger.warn "Invalid entity '#{entity_name}' in file '#{file}'"
|
40
39
|
logger.debug "#{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
|
41
40
|
else
|
42
41
|
logger.debug "#{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
|
43
|
-
raise PSE, "Invalid entity '#{entity_name}' in file '#{file}'"
|
42
|
+
raise PSE, "Invalid entity '#{entity_name}' in file '#{file}' (#{e.message})"
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
@@ -60,10 +59,10 @@ module ProjectStore
|
|
60
59
|
Dir.exist? path and File.readable? path and File.writable? path
|
61
60
|
end
|
62
61
|
|
63
|
-
def decorate_and_index_entity(entity_name, entity, store)
|
64
|
-
setup_entity! entity_name, entity
|
62
|
+
def decorate_and_index_entity(entity_name, entity, store, &block)
|
63
|
+
setup_entity! entity_name, entity, &block
|
65
64
|
# Re-check the validity of the object now that it has been decorated
|
66
|
-
entity.
|
65
|
+
entity.valid_to_load?(raise_exception: true)
|
67
66
|
index_entity(entity, store)
|
68
67
|
end
|
69
68
|
|
@@ -27,21 +27,23 @@ module ProjectStore
|
|
27
27
|
tmp_file = Tempfile.new([self.class.name, '.yaml']).path
|
28
28
|
begin
|
29
29
|
FileUtils.copy file, tmp_file
|
30
|
-
edit_file tmp_file
|
31
|
-
begin
|
30
|
+
edit_file tmp_file
|
31
|
+
# begin
|
32
32
|
store = YAML::Store.new(tmp_file)
|
33
33
|
store.transaction do
|
34
|
-
store.roots.each do |
|
35
|
-
store[
|
34
|
+
store.roots.each do |entity_name|
|
35
|
+
entity = store[entity_name]
|
36
|
+
setup_entity! entity_name, entity, &block
|
37
|
+
entity.valid_to_save? raise_exception: true
|
36
38
|
end
|
37
39
|
end
|
38
40
|
FileUtils.copy tmp_file, file
|
39
41
|
logger.info "File '#{file}' updated successfully."
|
40
42
|
file
|
41
|
-
rescue => e
|
42
|
-
|
43
|
-
|
44
|
-
end
|
43
|
+
# rescue => e
|
44
|
+
# logger.debug "#{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
|
45
|
+
# raise PSE, 'Invalid modifications. Aborted !'
|
46
|
+
# end
|
45
47
|
ensure
|
46
48
|
File.unlink tmp_file
|
47
49
|
end
|
@@ -17,17 +17,36 @@ module ProjectStore
|
|
17
17
|
ProjectStore.logger.warn "No backing store specified for '#{name}'. Not saved!"
|
18
18
|
return false
|
19
19
|
end
|
20
|
-
|
20
|
+
valid_to_save? raise_exception: true
|
21
21
|
ProjectStore.logger.debug "Saving '#{name}' into '#{backing_store.path}'"
|
22
22
|
backing_store.transaction do
|
23
23
|
backing_store[name] = self
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def valid_to_load?(raise_exception: false)
|
28
28
|
mandatory_properties.each do |mandatory_property|
|
29
29
|
unless self[mandatory_property]
|
30
|
-
raise_exception
|
30
|
+
if raise_exception then
|
31
|
+
raise(PSE, "Invalid entity '#{name}'. Missing '#{mandatory_property}' property")
|
32
|
+
else
|
33
|
+
ProjectStore.logger.warn "Invalid entity '#{name}'. Missing '#{mandatory_property}' property"
|
34
|
+
false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
def valid_to_save?(raise_exception: false)
|
42
|
+
mandatory_properties.each do |mandatory_property|
|
43
|
+
unless self[mandatory_property]
|
44
|
+
if raise_exception then
|
45
|
+
raise(PSE, "Invalid entity '#{name}'. Missing '#{mandatory_property}' property")
|
46
|
+
else
|
47
|
+
ProjectStore.logger.warn "Invalid entity '#{name}'. Missing '#{mandatory_property}' property"
|
48
|
+
false
|
49
|
+
end
|
31
50
|
end
|
32
51
|
end
|
33
52
|
true
|
@@ -41,11 +60,11 @@ module ProjectStore
|
|
41
60
|
raise PSE, 'Invalid entity. Missing name' unless name
|
42
61
|
raise PSE, 'Invalid entity. You should not specify a name as it would not be taken in account' if self[:name]
|
43
62
|
|
44
|
-
[:backing_store, :basic_checks, :save, :internal_type, :mandatory_properties, :
|
63
|
+
[:backing_store, :basic_checks, :save, :internal_type, :mandatory_properties, :valid_to_load?].each do |forbidden_name|
|
45
64
|
raise PSE, "Invalid entity '#{name}'. Forbidden '#{forbidden_name}' property" if self[forbidden_name]
|
46
65
|
end
|
47
66
|
|
48
|
-
|
67
|
+
valid_to_load?(raise_exception: true)
|
49
68
|
end
|
50
69
|
|
51
70
|
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.6.
|
4
|
+
version: 0.6.8
|
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-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|