#!/usr/bin/python3

import argparse
import os
import sys
import lxml.etree as etree

import filer
from erimp import Erimp

desc = 'fill kapro data into repconf'
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-v', action='store_true', help='verbose')
parser.add_argument('-d', action='store_true', help='delete')
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)

if 'kapro_dir' not in e.conf:
    print("I need kapro_dir in the config")
    quit()
kapro_dir = e.conf['kapro_dir']
issues_dir = e.dirs['issues']
do_verbose = args.v
do_delete = args.d
for repcode in e.live:
    kapro_fufi = f"{kapro_dir}/{repcode}.json.gz"
    if not os.path.isfile(kapro_fufi):
        if do_verbose:
            print(f"I don't see {kapro_fufi}")
        continue
    data = filer.load(kapro_fufi)
    count = 0
    for emad in data:
        if emad.endswith('.openlib.org'):
            continue
        count = count + 1
    if count == 0:
        if do_verbose:
            print(f"no subber in {kapro_fufi}")
        continue
    recon_fufi = e.recons[repcode]
    parser = etree.XMLParser(remove_blank_text=True)
    repdoc = etree.parse(recon_fufi, parser)
    col_eles = repdoc.xpath('/a:collection',
                            namespaces=e.abovo.nsmap)
    if len(col_eles) == 0:
        print("I see no collection")
    col_ele = col_eles[0]
    cosu_eles = repdoc.xpath('/a:collection/e:subbers',
                             namespaces=e.abovo.nsmap)
    if len(cosu_eles) > 1:
        print(f"I see too many cosus in {recon_fufi}", file=sys.stderr)
        continue
    if len(cosu_eles) == 1:
        cosu_ele = cosu_eles[0]
        if do_delete:
            print("remove")
            col_ele.remove(cosu_ele)
        else:
            cosu_ele.attrib['total'] = str(count)
    elif(not do_delete):
        ernad_ns = e.ns['ernad']
        cosu_ele = etree.Element(etree.QName(ernad_ns,
                                             'subbers'))
        cosu_ele.attrib['total'] = str(count)
        col_ele.append(cosu_ele)
        # col_ele.text = col_ele.text + '\n'
    if do_verbose:
        print(etree.tostring(col_ele, pretty_print=True).decode())
    else:
        filer.install_xml(col_ele, recon_fufi)
