From 73e4991b54f3021c578ed62689d5552ce8d5bc80 Mon Sep 17 00:00:00 2001 From: Miro HronĨok Date: Oct 03 2019 22:48:09 +0000 Subject: Find unblocked orphans: Ability to export time info as JSON I intend to publish this JSON together with https://churchyard.fedorapeople.org/orphans.txt Signed-off-by: Orphans Killer --- diff --git a/scripts/find_unblocked_orphans.py b/scripts/find_unblocked_orphans.py index de4eede..90a9dfc 100755 --- a/scripts/find_unblocked_orphans.py +++ b/scripts/find_unblocked_orphans.py @@ -19,6 +19,7 @@ import argparse import datetime import email.mime.text import hashlib +import json import os import smtplib import sys @@ -706,6 +707,9 @@ def main(): help="Source repo URL to use for depcheck") parser.add_argument("--repo", default=None, help="Repo URL to use for depcheck") + parser.add_argument("--json", default=None, + help="Export status_change info about orphaned " + "packages to a specified JSON file") parser.add_argument("--no-skip-blocked", default=True, dest="skipblocked", action="store_false", help="Do not skip blocked pkgs") @@ -742,6 +746,7 @@ def main(): eprint("Setting up dependency checker...", end=' ') depchecker = DepChecker(args.release) eprint("done") + eprint('Calculating dependencies...', end=' ') # Create dnf object and depsolve out if requested. # TODO: add app args to either depsolve or not @@ -755,6 +760,17 @@ def main(): text += FOOTER print(text) + if args.json is not None: + eprint(f'Saving {args.json} with status chnage times') + sc = {pkg: depchecker.pagure_dict[pkg].status_change.isoformat() + for pkg in orphans if pkg in depchecker.pagure_dict} + try: + with open(args.json, 'w') as f: + json.dump(sc, f, indent=4, sort_keys=True) + except OSError as e: + eprint(f'Cannot save {args.json}:', end=' ') + eprint(f'{type(e).__name__}: e') + if args.mailto or args.send: now = datetime.datetime.utcnow() today = now.strftime("%Y-%m-%d")