This repository was archived by the owner on Mar 12, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathStorage.py
More file actions
70 lines (49 loc) · 1.55 KB
/
Storage.py
File metadata and controls
70 lines (49 loc) · 1.55 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import os
import shutil
from . import Utils as U
__version__ = "v0.1.0"
class Storage:
def __init__(self, filename, default=None):
self.storageFile = filename
self.defaultFile = default
self.items = {}
# copy entire file, to keep comments
# if not os.path.isfile(filename) and default and os.path.isfile(default):
# shutil.copyfile(default, filename)
self.all()
def all(self):
userFile = self.getFilename()
if os.path.exists(userFile):
self.items = U.parseJson(self.getFilename())
else:
self.items = {}
return U.merge(self.items, self.defaults())
def write(self):
return U.saveJson(self.items if isinstance(self.items, dict) else {}, self.getFilename())
def add(self, key, value):
if len(key) <= 0:
return
self.all()
if isinstance(value, str):
value = [value]
self.items[key] = '\n'.join(value)
self.write()
def delete(self, key):
if len(key) <= 0:
return
self.all()
self.items.pop(key)
self.write()
def get(self, key, default=None):
if len(key) <= 0:
return
items = self.all()
return items[key] if key in items else default
def getFilename(self):
return self.storageFile
def defaults(self):
if self.defaultFile and os.path.isfile(self.defaultFile):
return U.parseJson(self.defaultFile)
return {}
class Settings(Storage):
pass