#!/usr/bin/python
#
# Format a spec
#

import jsontemplate
import pscheduler
import sys

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

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

if "data-ports" in json:
   data_ports = "%d - %d" % ( json["data-ports"]["lower"],
                              json["data-ports"]["upper"])
else:
   data_ports = ""

if format == 'text/plain':

   template = """
Source   ............ {.section source}{@}{.or}Not Specified{.end}
Destination ......... {.section dest}{@}{.or}Not Specified{.end}
Packet Count ........ {.section packet-count}{@}{.or}Not Specified{.end}
Packet Interval ..... {.section packet-interval}{@}{.or}Not Specified{.end}
Packet Timeout. ..... {.section packet-timeout}{@}{.or}Not Specified{.end}
Packet Padding. ..... {.section packet-padding}{@}{.or}Not Specified{.end}
Data Ports .......... {.section data-ports}%s{.or}Not Specified{.end}
IP TOS .............. {.section ip-tos}{@}{.or}Not Specified{.end}
IP Version .......... {.section ip-version}{@}{.or}Not Specified{.end}
Bucket Width ........ {.section bucket-width}{@}{.or}Not Specified{.end}
Output Raw Packets .. {.section output-raw}{@}{.or}Not Specified{.end}
Flip Mode ........... {.section flip}{@}{.or}Not Specified{.end}
Reverse Mode ........ {.section reverse}{@}{.or}Not Specified{.end}
""" % (data_ports)

elif format == 'text/html':

   template = """
<table>
<tr><td>Source</td><td>{.section source}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Destination</td><td>{.section dest}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Packet Count</td><td>{.section packet-count}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Packet Interval</td><td>{.section packet-interval}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Packet Timeout</td><td>{.section packet-timeout}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Packet Padding</td><td>{.section packet-padding}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Data Ports</td><td>{.section data-ports}%s{.or}Not Specified{.end}</td></tr>
<tr><td>IP TOS</td><td>{.section ip-tos}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>IP Version</td><td>{.section ip-version}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Bucket Width</td><td>{.section bucket-width}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Output Raw Packets</td><td>{.section output-raw}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Flip Mode</td><td>{.section flip}{@}{.or}Not Specified{.end}</td></tr>
<tr><td>Reverse Mode</td><td>{.section reverse}{@}{.or}Not Specified{.end}</td></tr>
</table>
""" % (data_ports)

else:

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


print jsontemplate.expand(template, json).strip()

pscheduler.succeed()

