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

import jsontemplate
import pscheduler
import sys

from validate import result_is_valid


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

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

valid, message = result_is_valid(input["result"])

if not valid:
    pscheduler.fail(message)

json = input["result"]


def dump_state(state, label, format):

   if format == 'text/plain':

      print(label)
      print("  Time ...........", state['time'])
      if state['synchronized']:
         print("  Synchronized ... %s, %s" % (
            state['source'], state['reference']))
         print("  Offset .........", state['offset'])

   elif format == 'text/html':

      print('<tr><th colspan="2">%s</td></tr>' % (label))
      print("<tr><td>Time</td><td>%s</td></tr>" % (state['time']))
      if state['synchronized']:
         print("<tr><td>Synchronized</td><td>%s %s</td></tr>" \
            % (state['source'], state['reference']))
         print("<tr><td>Offset</td><td>%f</td></tr>" % (state['offset']))

   else:
      assert False, "This should never happen."

if format == 'text/plain':
   pass
elif format == 'text/html':
   print("<table>")
else:
   assert False, "This should never happen."


dump_state(json['local'], "Local Host", format)
print()
dump_state(json['remote'], "Remote Host", format)
if format == 'text/plain':
   print()
   print("Difference .......", json['difference'])
elif format == 'text/html':
   print('<tr><td colspan="2">&nbsp;</td></tr>')
   print("<tr><td>Difference</td><td>%s</td></tr>" \
      % (json['difference']))
   print("</table>")
else:
   assert False, "This should never happen."

pscheduler.succeed()
