#!/usr/bin/env python3
#
# Convert a test specification to command-line options

import pscheduler

from validate import spec_is_valid
from validate import spec_max_schema
from validate import SPEC_SCHEMA

#load spec JSON
spec = pscheduler.json_load(exit_on_error=True, max_schema=spec_max_schema())
if not isinstance(spec, dict):
    pscheduler.fail("Invalid JSON for this operation")

#validate spec
valid, message = spec_is_valid(spec)
if not valid:
    pscheduler.fail(message)

#get properties from schema
spec_version = spec.get('schema', 1)
try:
    # It's safe to assume that the schema version is valid because it
    # passed validation above.
    schema_props = SPEC_SCHEMA['versions'][str(spec_version)]['properties']
except KeyError:
    pscheduler.fail("Error retrieving schema properties")

#build command-line from schema
result = []
for prop in schema_props:
    if prop in spec:
        if prop == "schema":
            continue
        elif prop == 'data-ports':
            result.append("--%s" % prop)
            result.append("%d-%d" %
                          (spec[prop]['lower'], spec[prop]['upper']))
        elif schema_props[prop].get('type', '') == "boolean" or schema_props[prop].get('$ref', '') == '#/pScheduler/Boolean':
            result.append("--%s" % prop)
        else:
            result.append("--%s" % prop)
            result.append("%s" % spec[prop])

pscheduler.succeed_json(result)


