#!/usr/bin/python3

import argparse
import os
import sys

from erimp import Erimp
from clarf import Clarf
from mocla import Mocla

desc = 'maintain the classing archive'
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-a', action='store_true', help='audit')
parser.add_argument('-v', action='store_true', help='raise verbosity')
parser.add_argument('-l', action='store_true', help='list dates')
parser.add_argument('-s', action='store_true', help='show')
parser.add_argument('-c', action='store_true', help='clear other data')
parser.add_argument('-k', action='store_true', help='check keys via dexis')
parser.add_argument('-K', action='store_true', help='-k historic')
parser.add_argument('-F', type=str, help='-k on file')
parser.add_argument('-H', action='store_true', help='head check')
# parser.add_argument('-H', type=str, help='head check')
parser.add_argument('-B', action='store_true', help='create in brown')
parser.add_argument('-f', type=str, help='feed side file')
parser.add_argument('bapis', metavar='bnp', type=str, nargs='*',
                    help='bits and pieces arguments')
args = parser.parse_args()

e = Erimp(args.bapis, do_verbose=args.v)

clarf = Clarf(e)
mocla = Mocla(e)

## emergncy
#if not args.v:
#    print("I do nothing without -v")
#    quit()

if args.a:
    clarf.audit_all()
    sys.exit()

if args.B:
    clarf.create_in_brown()
    sys.exit()

if args.H:
    if e.given_issuedate is None or e.given_repcode is None:
        print("I need report and an issue to test the head")
        sys.exit()
    out = clarf.head_check()
    if out is True:
        print("pass")
    elif out is False:
        print("fail")
    else:
        print(out)
    sys.exit()


if args.B:
    clarf.create_in_brown()
    sys.exit()

if args.f is not None:
    fufi = os.path.abspath(args.f)
    from riffer import Riffer
    riffer = Riffer(e)
    issuedate = riffer.issuedate(fufi)
    repcode = riffer.repcode(fufi)
    clarf.single(repcode, issuedate)
    sys.exit()

## this really was done in the crises of 2024-11-14
## to see whether I can recover some data from files
if args.F is not None:
    fufi = os.path.abspath(args.F)
    clarf.check_keys(fufi)

if args.k:
    if not e.given_issuedate:
        print("I need an issuedate with -k")
        sys.exit()
    clarf.check_keys(e.given_issuedate)
    sys.exit()

if args.K:
    clarf.check_keys_historic()
    sys.exit()

if args.c:
    if e.given_repcode is None:
        print("I need a repcode for the -c option")
        sys.exit()
    if e.given_issuedate is None:
        print("I need an issuedate for the -c option")
        sys.exit()
    out = clarf.is_clarf_equal_to_saifi(e.given_repcode, e.given_issuedate)
    if out is not True:
        print(out, file=sys.stderr)
        sys.exit()
    print(f"I can clear for {e.given_repcode} and {e.given_issuedate}")
    # mocla.clear(e.given_repcode, e.given_issuedate)
    sys.exit()

if args.s:
    if e.given_repcode is None:
        print("I need a repcode for the -s option")
        sys.exit()
    if e.given_issuedate is None:
        print("I need an issuedate for the -s option")
        sys.exit()
    clarf.show(e.given_repcode, e.given_issuedate)
    sys.exit()

if args.l:
    if e.given_repcode is None:
        print("I need a repcode for the -l option")
        sys.exit()
    dafus = clarf.get_dafus(e.given_repcode)
    print(dafus)
    for issuedate in dafus:
        print(issuedate + ' ' + dafus[issuedate])
    sys.exit()

clarf.update()
