blob: 5c075b4185f329831e120b41574f0dee918f3357 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
module Trunk
class YAMLStorage
attr_reader :private_key, :absolute_path
def initialize(absolute_path, private_key)
@absolute_path = absolute_path
@private_key = private_key
end
def fetch(*args)
transaction do |storage|
storage.fetch(*args)
end
end
def store(*args)
transaction do |storage|
storage.store(*args)
end
end
private
def transaction
hash = YAML.load(IO.read(absolute_path)) || {}
storage = Storage.new(hash, serializer)
yield storage
ensure
IO.write(absolute_path, YAML.dump(hash))
end
def serializer
serializer = Trunk::Serializers::Composite.new
serializer.add(Trunk::Serializers::Crypto.new(private_key))
serializer.add(Trunk::Serializers::Base64.new)
serializer
end
end
end
|