1
0
Fork 0

Get rid of pickling data and only use JSON

It's much better to have a plaintext representation than a binary file
for this specific type of data.
This commit is contained in:
Luca Beltrame 2021-01-02 10:38:19 +01:00
parent fccffc5f1e
commit 5a6bae6b2d
Signed by: einar
GPG key ID: 4707F46E9EC72DEC

View file

@ -6,7 +6,6 @@ import argparse
import logging import logging
import json import json
from pathlib import Path from pathlib import Path
import pickle
from urllib.parse import urlencode from urllib.parse import urlencode
import git import git
@ -37,8 +36,8 @@ class GitHashCache:
def save(self): def save(self):
logging.debug("Saving pickled data") logging.debug("Saving pickled data")
with open(self.cache, "wb") as handle: with open(self.cache, "w") as handle:
pickle.dump(self._data, handle, pickle.HIGHEST_PROTOCOL) json.dump(self._data, handle, indent=4)
def load(self): def load(self):
@ -46,23 +45,9 @@ class GitHashCache:
logging.debug("File cache not found, not loading") logging.debug("File cache not found, not loading")
return return
logging.debug("Saving pickled data") with open(self.cache) as handle:
with open(self.cache, "rb") as handle:
self._data = pickle.load(handle)
def load_json(self):
if not Path(self.cache).with_suffix(".json").exists():
logging.debug("File cache not found, not loading")
return
with Path(self.cache).with_suffix(".json").open() as handle:
self._data = json.load(handle) self._data = json.load(handle)
def to_json(self):
with Path(self.cache).with_suffix(".json").open("w") as handle:
json.dump(self._data, handle, indent=4)
def project_exists(project): def project_exists(project):
project_name = urlencode(project) project_name = urlencode(project)
@ -135,7 +120,6 @@ def update_package(hash_data, package_name,
if run_osc(obs_repository, package_name): if run_osc(obs_repository, package_name):
hash_data[obs_repository][remote_name] = remote_hash hash_data[obs_repository][remote_name] = remote_hash
hash_data.save() hash_data.save()
hash_data.to_json()
def update_packages(cache_file, repo_mapping_file): def update_packages(cache_file, repo_mapping_file):
@ -170,6 +154,9 @@ def update_packages(cache_file, repo_mapping_file):
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument(
"--cache-file", help="Location of the cache file",
default=Path.home() / ".local/share/obs_repo_cache.json")
parser.add_argument("mapping_file", help="KDE:OBS repository mapping file") parser.add_argument("mapping_file", help="KDE:OBS repository mapping file")
parser.add_argument("--debug", help="Show debugging output", parser.add_argument("--debug", help="Show debugging output",
action="store_true") action="store_true")
@ -180,8 +167,7 @@ def main():
logging.basicConfig(format='%(levelname)s - %(message)s', logging.basicConfig(format='%(levelname)s - %(message)s',
level=level) level=level)
cache_file = Path.home() / ".local/share/obs_repo_cache.cache" cache_file = options.cache_file
cache_file = str(cache_file)
update_packages(cache_file, options.mapping_file) update_packages(cache_file, options.mapping_file)
logging.info("Complete") logging.info("Complete")