project_store 0.6.12 → 0.7.0

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: 0a718b3c2d2ce4e56403878d443ab5407d03bdf5
4
- data.tar.gz: 69aee55b410721ccc0938c49da6950ee34232886
3
+ metadata.gz: 4819203c3889f05232a0afd13a05894d3077cf1a
4
+ data.tar.gz: c2f6683a99c1d3f19dfc5bdcef92b223ceb24403
5
5
  SHA512:
6
- metadata.gz: 390c82b174e497c401a1e1097d652b90e788ed89181f8c27ccf1762f909dfe36a0b5e0f2d5d2880e539e69dd36805322f194dc224fda86c1a7a2fc5dbf8066eb
7
- data.tar.gz: 19503582304048ebf90a7510fefcb7a4af20d596f27a7b5d5d9c7525198199025ae5cfce35eedfd7ee9b7eb793daa0f229562f2619b209d223b62064b7ba7a70
6
+ metadata.gz: f4531161effa7a1c94176481a6b800a308f3e7814d929e7674ccf718dc061b6914e1fc248cf34aa0ec70bc4308c81ddddbf69a2c7fc56ca65f66b3a52fc5cef7
7
+ data.tar.gz: 3ddf7c1396fcc60206e03ee0f56f37330b0b8ec86698f3134983db6e6a9c3a621e77025ed55da5b6c35c8d8905c07e241e8c805af38524e3c4c06a62c58342ec
@@ -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]
@@ -1,3 +1,3 @@
1
1
  module ProjectStore
2
- VERSION = '0.6.12'
2
+ VERSION = '0.7.0'
3
3
  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.12
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-08-08 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler