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:
parent
fccffc5f1e
commit
5a6bae6b2d
1 changed files with 7 additions and 21 deletions
|
@ -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")
|
||||||
|
|
Loading…
Add table
Reference in a new issue