#!/usr/bin/env python3
#
# Format a spec
#

import jsontemplate
import pscheduler
import sys

from validate import spec_is_valid


try:
   format = sys.argv[1]
except IndexError:
   format = 'text/plain'

json = pscheduler.json_load(exit_on_error=True, max_schema=2)

valid, message = spec_is_valid(json)

if not valid:
    pscheduler.fail(message)


if format == 'text/plain':

   template = """
Destination ...... {.section dest}{dest}{.or}Not Specified{.end}
Max. Dawdle  ..... {.section dawdle}{dawdle}{.or}Not Specified{.end}
IP Version ....... {.section ip-version}{ip-version}{.or}Not Specified{.end}
Test Material .... {.section test-material}{test-material}{.or}Not Specified{.end}
Timeout .......... {.section timeout}{timeout}{.or}Not Specified{.end}
Chance of Fail ... {.section fail}{fail}{.or}Not Specified{.end}

   """

elif format == 'text/html':

   template = """
<table border="0">
<tr><td><b>Destination</b></td><td>
{.section destf}{dest}{.or}<i>Not Specified</i>{.end}
</td></tr>
<tr><td><b>Max. Dawdle</b></td><td>
{.section dawdle}{dawdle}{.or}<i>Not Specified</i>{.end}
</td></tr>
<tr><td><b>Max. Dawdle</b></td><td>
{.section ip-version}{ip-version}{.or}<i>Not Specified</i>{.end}
</td></tr>
<tr><td><b>Test Material</b></td><td>
{.section test-material}<tt>{test-material}</tt>{.or}<i>Not Specified</i>{.end}
</td></tr>
<tr><td><b>Timeout</b></td><td>
{.section timeout}{timeout}{.or}<i>Not Specified</i>{.end}
</td></tr>
<tr><td><b>Chance of Fail</b></td><td>
{.section fail}{fail}{.or}<i>Not Specified</i>{.end}
</td></tr>
</table>
   """

else:

   pscheduler.fail("Unsupported format '%s'" % format)


# TODO: Should probably handle exceptions in a nicer way.
print(jsontemplate.expand(template, json).strip())
