#!/usr/bin/python3

import glob, fileinput, os, re, shutil, sys, tempfile, time

year = 2019
webfile_dir = "~/public_html/GunRun{}/".format(year)
#print("NOTE: year is {}".format(year))

webfile_dir = os.path.expanduser(webfile_dir)
for root, dirs, files in os.walk(webfile_dir):
    documents=[]
    for file in files:
        if re.search('.(pdf|png|jpg|jpeg|htm|html|mp4|pptx)$', file) and not re.search('index.html', file):
            try:
            	documents.append(os.path.join(file))
            except OSError:
                pass

    canonical=[]
    archive=[]
    marshals=[]
    for file in documents:
        name=os.path.basename(file)
        if re.search('^\d{8}', name):
            archive.append(name)
        elif re.search('_marshal_map_', name):
            marshals.append(name)
        else:
            canonical.append(name)

    indexfile = open(os.path.join(webfile_dir, root, "index.html"), "w")

    output = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Gun Run {} Maps</title>
 </head>
 <body>
<h1>Gun Run {} Maps</h1>
""".format(year, year)

    if canonical:
        output += """<p>Maps</p><ul>"""
        for link in sorted(canonical):
            overview=re.search("Marshal overview", link)
            if overview is not None:
                continue
            type=re.search("^Gun Run {} - (.*?)\.\S+$".format(year), link, re.IGNORECASE)
            if type is not None:
                name=type.group(1)
            else:
                name=link
            output += """<li><a href="{}">{}</a></li>""".format(link, name)
        output += """</ul>"""

    if dirs:
        output +="""<p>Clubs</p><ul>"""
        dirs.sort()
        for link in dirs:
            if not os.path.islink(link):
                output += """<li><a href="{}">{}</a></li>""".format(link, link)
        output += """</ul>"""

    if archive:
        archive=[i.split(' - ') for i in archive]
        archive.sort(key=lambda line: (line[2],line[0]))
        archive = [' - '.join(i) for i in archive]

        output +="""<p>Source Maps</p><ul>"""
        for link in archive:
            output += """<li><a href="{}">{}</a></li>""".format(link, link)
        output += """</ul>"""

    if marshals:
        output +="""<p>Marshal maps</p><table style="border-collapse: collapse;">"""
        marshals.sort()
        positions={}
        for link in marshals:
            m = re.search('^(.*?).(pdf|png|jpg|jpeg)$', link)
            if m is not None:
                positions.setdefault(m.group(1), {})[m.group(2)] = link
        for num, ext in positions.items():
            num = re.sub('\D', '', num)
            output += """<tr style="border-bottom: 1pt solid black"><td style="padding: 4px 12px;">{}</td>""".format(num)
            for link in ext.values():
                output += """<td style="padding: 4px 12px;"><a href="{}">{}</a></td>""".format(link, link)
            output += """<tr>"""
        output += """<table>"""
        

    output += """</body></html>"""

    indexfile.write(output)
    indexfile.close()

# vim: set expandtab shiftwidth=4 softtabstop=4 :
