#!/usr/bin/env python3

__copyright__ = "Copyright 2024, http://radical.rutgers.edu"
__license__   = "MIT"


import sys
import time

import radical.utils   as ru
import radical.pilot   as rp


# ------------------------------------------------------------------------------
#
if __name__ == "__main__":

    if len(sys.argv) <= 2:
        sys.stderr.write(
            'error: invalid arguments\n'
            'usage: %s <sid> <command> [arg0=val0] [arg1=val1,val2] [fwd] ...\n'
            % sys.argv[0])
        raise RuntimeError('invalid arguments: %s' % sys.argv)

    sid  = sys.argv[1]
    cmd  = sys.argv[2]
    if len(sys.argv) > 3:
        args = sys.argv[3:]
    else:
        args = []

    log  = ru.Logger(name='radical.pilot', targets='/dev/null')
  # log  = ru.Logger(name='radical.pilot', targets='-')
    reg  = ru.Config(ru.read_json(f'{sid}/{sid}.reg.init.json'))
    addr = reg.bridges.control_pubsub.addr_pub
    pub  = ru.zmq.Publisher(rp.CONTROL_PUBSUB, url=addr, log=log)

    try:
        args.remove('fwd')
    except ValueError:
        fwd = False
    else:
        fwd = True

    msg  = {'cmd' : cmd,
            'arg' : {k: (v if ',' not in v else v.split(','))
                     for k, v in [a.split('=') for a in args]},
            'fwd' : fwd}

    pub.put(rp.CONTROL_PUBSUB, msg)
    time.sleep(0.1)


# ------------------------------------------------------------------------------

