
import os
import glob
# import rexer

# from constant import const

def list_amf_fufis(folder, with_gz=True):
    if not os.path.isdir(folder):
        return None
    fufis = []
    base_glob = folder + '/*' + const['amf_ext']
    for fufi in glob.glob(base_glob):
        fufis.append(fufi)
    if not with_gz:
        return fufis
    comp_glob = base_glob + '.gz'
    for fufi in glob.glob(comp_glob):
        fufis.append(fufi)
    return fufis


# # issue and version
def isve(folder, do_verbose=True):
    fufis = list_amf_fufis(folder)
    iv = {}
    for fufi in fufis:
        bana = os.path.basename(fufi)
        # # simple check
        if len(bana) < 12:
            continue
        if bana[10:11] != '_':
            continue
        issuedate = bana[0:10]
        print(issuedate)
        if issuedate not in iv:
            iv[issuedate] = {}
        shoti = bana[11:17]
        iv[issuedate][shoti] = fufi
        print(shoti)


# # issue and version
def firsts_isda_shot(folder, do_verbose=True):
    fufis = list_amf_fufis(folder)
    d = {}
    for fufi in fufis:
        bana = os.path.basename(fufi)
        # # simple check
        if bana[10:11] != '_':
            continue
        issuedate = bana[0:10]
        shoti = bana[11:17]
        print(issuedate)
        if issuedate not in d:
            d[issuedate] = shoti
            continue
        if shoti < d[issuedate]:
            d[issuedate] = shoti
    issuedates = sorted(d.keys(), key=lambda x:x.lower())
    iv = {}
    for issuedate in issuedates:
        iv[issuedate] = d[issuedate]
    return iv


# # issue and version
def firsts_shoti(folder, do_verbose=True):
    fufis = list_amf_fufis(folder)
    if fufis is None:
        print("no data for " + folder)
        return None
    d = {}
    for fufi in fufis:
        bana = os.path.basename(fufi)
        # # simple check
        if bana[10:11] != '_':
            continue
        issuedate = bana[0:10]
        shoti = bana[11:17]
        if issuedate not in d:
            d[issuedate] = shoti
            continue
        if shoti < d[issuedate]:
            d[issuedate] = shoti
    issuedates = sorted(d.keys(), key=lambda x:x.lower())
    shotis = []
    for issuedate in issuedates:
        shotis.append(d[issuedate])
    return shotis


def last_fufi(folder, glob_string="*"):
    search = folder + '/' + glob_string
    fufis = glob.glob(search)
    if len(fufis) == 0:
        return None
    latest_fufi = max(fufis, key=os.path.getmtime)
    return latest_fufi
