project_store 0.6.12 → 0.7.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/base.rb +22 -0
- data/lib/project_store/entity/base.rb +11 -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: 4819203c3889f05232a0afd13a05894d3077cf1a
|
4
|
+
data.tar.gz: c2f6683a99c1d3f19dfc5bdcef92b223ceb24403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4531161effa7a1c94176481a6b800a308f3e7814d929e7674ccf718dc061b6914e1fc248cf34aa0ec70bc4308c81ddddbf69a2c7fc56ca65f66b3a52fc5cef7
|
7
|
+
data.tar.gz: 3ddf7c1396fcc60206e03ee0f56f37330b0b8ec86698f3134983db6e6a9c3a621e77025ed55da5b6c35c8d8905c07e241e8c805af38524e3c4c06a62c58342ec
|
data/lib/project_store/base.rb
CHANGED
@@ -27,6 +27,27 @@ module ProjectStore
|
|
27
27
|
@entity_types = {}
|
28
28
|
end
|
29
29
|
|
30
|
+
def create(entity_name, entity_content = {}, entity_type = nil, &block)
|
31
|
+
raise PSE, "Entity '#{entity_name}' already exists !" if project_entities[entity_name]
|
32
|
+
entity_type ||= entity_content[:type]
|
33
|
+
entity_content[:type] = entity_type
|
34
|
+
store_file = File.join path, "#{entity_type}.yaml"
|
35
|
+
candidate_stores = files.keys.select do |store|
|
36
|
+
store.path == store_file
|
37
|
+
end
|
38
|
+
raise PSE, 'Oops something went really wrong' if candidate_stores.size > 1
|
39
|
+
target_store = candidate_stores.empty? ? YAML::Store.new(store_file) : candidate_stores.first
|
40
|
+
files[target_store] ||= []
|
41
|
+
decorate_and_index_entity entity_name, entity_content, target_store, &block
|
42
|
+
end
|
43
|
+
|
44
|
+
def delete(entity)
|
45
|
+
files[entity.backing_store].delete entity
|
46
|
+
project_entities.delete entity.name
|
47
|
+
entity_types[entity.type].delete entity
|
48
|
+
entity.delete!
|
49
|
+
end
|
50
|
+
|
30
51
|
def load_entities(&block)
|
31
52
|
Dir.glob(File.join(path, '*.yaml')).each do |file|
|
32
53
|
logger.debug "Found store file '#{file}'"
|
@@ -76,6 +97,7 @@ module ProjectStore
|
|
76
97
|
# Re-check the validity of the object now that it has been decorated
|
77
98
|
entity.valid_to_load?(raise_exception: true)
|
78
99
|
index_entity(entity, store)
|
100
|
+
entity
|
79
101
|
end
|
80
102
|
|
81
103
|
def index_entity(entity, store)
|
@@ -24,6 +24,17 @@ module ProjectStore
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
def delete!
|
28
|
+
if backing_store.nil?
|
29
|
+
ProjectStore.logger.warn "No backing store specified for '#{name}'. Not saved!"
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
ProjectStore.logger.debug "Deleting '#{name}' from '#{backing_store.path}'"
|
33
|
+
backing_store.transaction do
|
34
|
+
backing_store.delete name
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
27
38
|
def valid_to_load?(raise_exception: false)
|
28
39
|
mandatory_properties.each do |mandatory_property|
|
29
40
|
unless self[mandatory_property]
|
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.7.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-
|
11
|
+
date: 2016-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|