From 6db8637e14df554d15f5852b9a93c1a29523f2b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20C=2E=20S=C3=A1nchez?= Date: Sat, 21 Nov 2020 09:10:24 -0500 Subject: LTS: Ensure ~/.cache exists before writing out tracker data cache If ~/.cache does not already exist, then this happens: $ ./bin/lts-cve-triage.py Updating ~/.cache/debian_security_tracker.json from https://security-tracker.debian.org/tracker/data/json ... Traceback (most recent call last): File "./bin/lts-cve-triage.py", line 94, in tracker = TrackerData(update_cache=not args.skip_cache_update) File "/home/roberto/src/freexian/security-tracker.git/bin/tracker_data.py", line 40, in __init__ self.update_cache() File "/home/roberto/src/freexian/security-tracker.git/bin/tracker_data.py", line 77, in update_cache with open(self.cached_data_path, 'w') as cache_file: FileNotFoundError: [Errno 2] No such file or directory: '/home/roberto/.cache/debian_security_tracker.json' --- bin/tracker_data.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'bin') diff --git a/bin/tracker_data.py b/bin/tracker_data.py index b5f15c3976..a3eb2b3d23 100644 --- a/bin/tracker_data.py +++ b/bin/tracker_data.py @@ -25,6 +25,7 @@ import six class TrackerData(object): DATA_URL = "https://security-tracker.debian.org/tracker/data/json" GIT_URL = "https://salsa.debian.org/security-tracker-team/security-tracker.git" + CACHED_DATA_DIR = "~/.cache" CACHED_DATA_PATH = "~/.cache/debian_security_tracker.json" CACHED_REVISION_PATH = "~/.cache/debian_security_tracker.rev" GET_REVISION_COMMAND = \ @@ -33,6 +34,7 @@ class TrackerData(object): def __init__(self, update_cache=True): self._latest_revision = None + self.cached_data_dir = os.path.expanduser(self.CACHED_DATA_DIR) self.cached_data_path = os.path.expanduser(self.CACHED_DATA_PATH) self.cached_revision_path = os.path.expanduser( self.CACHED_REVISION_PATH) @@ -74,6 +76,9 @@ class TrackerData(object): self.DATA_URL)) response = requests.get(self.DATA_URL, allow_redirects=True) response.raise_for_status() + # if ~/.cache does not exist, then open() will fail; dec 448 -> octal 0700 + if not os.path.exists(self.cached_data_dir): + os.mkdir(self.cached_data_dir, mode=448) with open(self.cached_data_path, 'w') as cache_file: cache_file.write(response.text) with open(self.cached_revision_path, 'w') as rev_file: -- cgit v1.2.3