From b1ae8488ac344e87f189b774c9eaddf41d7d71e4 Mon Sep 17 00:00:00 2001 From: z4yx Date: Mon, 4 May 2020 15:02:39 +0800 Subject: [PATCH] fix bugs in size calculation --- helpers/size-sum.sh | 2 +- yum-sync.py | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/helpers/size-sum.sh b/helpers/size-sum.sh index 59285a4..6ab67bc 100755 --- a/helpers/size-sum.sh +++ b/helpers/size-sum.sh @@ -1,6 +1,6 @@ #!/bin/bash # requires: coreutils -[[ -f "$1" ]] || exit +[[ -f "$1" ]] || exit 0 sz=$(cat $1) sz=$((0$sz)) echo "size-sum:" $(numfmt --to=iec $sz) diff --git a/yum-sync.py b/yum-sync.py index 4f8e81f..9b4228e 100755 --- a/yum-sync.py +++ b/yum-sync.py @@ -21,21 +21,23 @@ REPO_STAT = {} def calc_repo_size(path: Path): dbfiles = path.glob('repodata/*primary.sqlite*') with tempfile.NamedTemporaryFile() as tmp: + dec = None + dbfile = None for db in dbfiles: - with db.open('rb') as f: - suffix = db.suffix - if suffix == '.bz2': - tmp.write(bz2.decompress(f.read())) - break - elif suffix == '.gz': - tmp.write(gzip.decompress(f.read())) - break - elif suffix == '': - tmp.write(f.read()) - break - else: + dbfile = db + suffix = db.suffix + if suffix == '.bz2': + dec = bz2.decompress + elif suffix == '.gz': + dec = gzip.decompress + elif suffix == '.sqlite': + dec = lambda x: x + if dec is None: print(f"Failed to read DB from {path}: {dbfiles}", flush=True) return + with db.open('rb') as f: + tmp.write(dec(f.read())) + tmp.flush() conn = sqlite3.connect(tmp.name) c = conn.cursor()