]> git.armaanb.net Git - lightcards.git/blob - lightcards/progress.py
Clean up pickle implementation
[lightcards.git] / lightcards / progress.py
1 # Save and resume progress in lightcards
2 # Armaan Bhojwani 2021
3
4 import hashlib
5 import os
6 import pickle
7 import shutil
8
9 global dired
10 dired = f"{os.path.expanduser('~')}/.cache/lightcards/"
11
12 def name_gen(stra):
13     hasher = hashlib.md5()
14     hasher.update(str(stra).encode("utf-8"))
15     return(hasher.hexdigest())
16
17
18 def make_dirs(dired):
19     if not os.path.exists(dired):
20         os.makedirs(dired)
21
22
23 def dump(obj, stra):
24     make_dirs(dired)
25
26     pickle.dump(obj, open(f"{dired}/{name_gen(stra)}.p", "wb"))
27
28
29 def dive(stra):
30     file = f"{dired}/{name_gen(stra)}.p"
31     make_dirs(dired)
32     if os.path.exists(file):
33         return pickle.load(open(file, "rb"))
34     else:
35         return False
36
37
38 def purge(stra):
39     file = f"{dired}/{name_gen(stra)}/"
40     if os.path.exists(file):
41         shutil.rmtree(file)
42
43
44 def purge_all():
45     if os.path.exists(dired):
46         shutil.rmtree(dired)
47
48
49 if __name__ == "__main__":
50     main()