lists: fix mirror mapping output

This commit is contained in:
Iain Learmonth 2022-05-01 17:08:48 +01:00
parent 481e60fa45
commit 8960f8904c
3 changed files with 41 additions and 1 deletions

View file

@ -4,6 +4,7 @@ import sys
from os.path import basename from os.path import basename
from app.cli.db import DbCliHandler from app.cli.db import DbCliHandler
from app.cli.list import ListCliHandler
def parse_args(argv): def parse_args(argv):
@ -13,6 +14,7 @@ def parse_args(argv):
parser.add_argument("-v", "--verbose", help="increase logging verbosity", action="store_true") parser.add_argument("-v", "--verbose", help="increase logging verbosity", action="store_true")
subparsers = parser.add_subparsers(title="command", help="command to run") subparsers = parser.add_subparsers(title="command", help="command to run")
DbCliHandler.add_subparser_to(subparsers) DbCliHandler.add_subparser_to(subparsers)
ListCliHandler.add_subparser_to(subparsers)
args = parser.parse_args(argv[1:]) args = parser.parse_args(argv[1:])
if "cls" in args: if "cls" in args:
command = args.cls(args) command = args.cls(args)

38
app/cli/list.py Normal file
View file

@ -0,0 +1,38 @@
import argparse
import json
import logging
import sys
from typing import Callable
from app import app, mirror_sites
from app.lists.bridgelines import bridgelines
from app.lists.mirror_mapping import mirror_mapping
lists = {
"mirror_mapping": mirror_mapping,
"bc2": mirror_sites,
"bridgelines": bridgelines,
}
def dump(list_f: Callable):
json.dump(list_f(), sys.stdout, indent=2)
class ListCliHandler:
@classmethod
def add_subparser_to(cls, subparsers: argparse._SubParsersAction) -> None:
parser = subparsers.add_parser("list", help="list operations")
parser.add_argument("--dump", choices=sorted(lists.keys()),
help="dump a list in JSON format")
parser.set_defaults(cls=cls)
def __init__(self, args):
self.args = args
def run(self):
with app.app_context():
if self.args.dump:
dump(lists[self.args.dump])
else:
logging.error("No action requested")

View file

@ -23,7 +23,7 @@ class MirrorMapping(BaseModel):
def mirror_mapping(): def mirror_mapping():
return MirrorMapping(**{ return MirrorMapping(__root__={
d.url.lstrip("https://"): MMMirror( d.url.lstrip("https://"): MMMirror(
origin_domain=d.origin.domain_name, origin_domain=d.origin.domain_name,
origin_domain_normalized=d.origin.domain_name.lstrip("www."), origin_domain_normalized=d.origin.domain_name.lstrip("www."),