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

import pscheduler

from validate import spec_is_valid
from validate import MAX_SCHEMA

TEMPLATE='''
{%- set schema = 1 if schema is undefined else schema -%}
{% if _mime_type == 'text/plain' %}

Source ........................ {{ unspec(source) }}
Source Node ................... {{ unspec(sourcenode) }}
Destination ................... {{ unspec(dest) }}
IP Version .................... {{ unspec(ipversion) }}
{%- if schema >= 2 %}
Protocol ...................... {{ unspec(protocol) }}
{%- endif -%}
{%- if schema >= 4 %}
Port .......................... {{ unspec(port) }}
{% endif -%}
Packet Count .................. {{ unspec(count) }}
Interval ...................... {{ unspec(interval) }}
Flow Label .................... {{ unspec(flowlabel) }}
Suppress Multicast Loopback ... {{ unspec(suppressloopback) }}
Packet Length ................. {{ unspec(length) }}
{%- if schema >= 3 %}
Fragment ...................... {{ unspec(fragment) }}
{% endif -%}
Time to Live .................. {{ unspec(ttl) }}
IP Type of Service ............ {{ unspec(iptos) }}
Deadline ...................... {{ unspec(deadline) }}
Timeout ....................... {{ unspec(timeout) }}
Resolve Hostnames ............. {{ unspec(hostnames) }}

{% elif _mime_type == 'text/html' %}

<table>
<tr><td>Source</td><td>{{ unspec(source) }}</td></tr>
<tr><td>Source Node</td><td>{{ unspec(sourcenode) }}</td></tr>
<tr><td>Destination</td><td>{{ unspec(dest) }}</td></tr>
<tr><td>IP Version</td><td>{{ unspec(ipversion) }}</td></tr>
{%- if schema >= 2 %}
<tr><td>Protocol</td><td>{{ unspec(protocol) }}</td></tr>
{% endif -%}
{%- if schema >= 4 -%}
<tr><td>Port</td><td>{{ unspec(port) }}</td></tr>
{% endif -%}
<tr><td>Packet Count</td><td>{{ unspec(count) }}</td></tr>
<tr><td>Interval</td><td>{{ unspec(interval) }}</td></tr>
<tr><td>Flow Label</td><td>{{ unspec(flowlabel) }}</td></tr>
<tr><td>Suppress Multicast Loopback</td><td>{{ unspec(suppressloopback) }}</td></tr>
<tr><td>Packet Length</td><td>{{ unspec(length) }}</td></tr>
{%- if schema >= 3 %}
<tr><td>Fragment</td><td>{{ unspec(fragment) }}</td></tr>
{% endif -%}
<tr><td>Time to Live</td><td>{{ unspec(ttl) }}</td></tr>
<tr><td>IP Type of Service</td><td>{{ unspec(iptos) }}</td></tr>
<tr><td>Deadline</td><td>{{ unspec(deadline) }}</td></tr>
<tr><td>Timeout</td><td>{{ unspec(timeout) }}</td></tr>
<tr><td>Resolve Hostnames</td><td>{{ unspec(hostnames) }}</td></tr>
</table>

{% else %}

{{ error('Unsupported MIME type "' + _mime_type + '"') }}

{% endif %}
'''

pscheduler.spec_format_method(TEMPLATE, max_schema=MAX_SCHEMA, validator=spec_is_valid)
