]> git.armaanb.net Git - lightcards.git/blob - lightcards/progress.py
Follow XDG_CACHE_HOME
[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
8 xdg = os.environ.get("XDG_CACHE_HOME")
9 if xdg:
10     dired = f"{os.path.expanduser('~')}/{xdg}/lightcards/"
11 else:
12     dired = f"{os.path.expanduser('~')}/.cache/lightcards/"
13
14
15 def name_gen(stra):
16     """Generate hash of stack for name of pickle file"""
17     return hashlib.md5(str([str(x) for x in stra]).encode("utf-8")).hexdigest()
18
19
20 def make_dirs(dired):
21     """mkdir -p equivalent"""
22     if not os.path.exists(dired):
23         os.makedirs(dired)
24
25
26 def dump(obj, stra):
27     """Write pickle file"""
28     make_dirs(dired)
29
30     pickle.dump(obj, open(f"{dired}/{name_gen(stra)}.p", "wb"))
31
32
33 def dive(stra):
34     """Get pickle file"""
35     file = f"{dired}/{name_gen(stra)}.p"
36     make_dirs(dired)
37     if os.path.exists(file):
38         return pickle.load(open(file, "rb"))
39     else:
40         return False
41
42
43 def purge(stra):
44     """Delete pickle file"""
45     file = f"{dired}/{name_gen(stra)}.p"
46     if os.path.exists(file):
47         os.remove(file)