#!/usr/bin/python
import sys
import codecs

HTML_START = """<!DOCTYPE html>
<html lang="en-us">
<head>
  <meta charset="utf-8">
  <title>Dosage comic status</title>
</head>
<body>
"""

HTML_END = """
</body></html>
"""


def main(args=None):
    if args is None:
        args = sys.argv[1:]
    filename = 'testresults.txt'
    with open(filename) as fp:
        tests = parse_test_data(fp)
    output = 'table.html'
    with codecs.open(output, 'w', 'utf-8') as fp:
        render_test_data(tests, fp)


def get_comic_name(line):
    return line.split('::')[1][4:]


def parse_test_data(fp):
    data = []
    for line in fp:
        if line.rstrip().endswith('::test_comic'):
            name = get_comic_name(line)
            failed = line.startswith('F')
            data.append((name, failed))
    data.sort()
    return data


def render_test_data(tests, fp):
    fp.write(HTML_START)
    fp.write('<table><th><td>Name</td><td>Status</td></th>\n')
    for name, failed in tests:
        status = failed and "broken" or "ok"
        fp.write('<tr><td>%s</td><td>%s</td></tr>\n' % (name, status))
    fp.write('</table>\n')
    fp.write(HTML_END)


if __name__ == '__main__':
    main()