#!/usr/bin/env python3

import sys
import os
import logging
import argparse
import tempfile
import urllib.parse
import re

import devkit_utils

logging.basicConfig(format='%(message)s', level=logging.DEBUG)
logger = logging.getLogger()

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('command')
    parser.add_argument('args', nargs='*')
    conf = parser.parse_args()

    try:
        devkit_utils.validate_steam_client()
    except devkit_utils.SteamClientNotRunningException as e:
        logger.error(repr(e))
        sys.exit(-1)
    else:
        with tempfile.TemporaryDirectory(prefix='steam-devkit-rpc') as tempdir:
            response = os.path.join(tempdir, 'steam-devkit-rpc')
            parms = {
                'response' : response,
            }
            for arg in conf.args:
                (k, v) = re.split('=', arg)
                parms[k] = v
            cmd = f'{conf.command}/?{urllib.parse.urlencode(parms)}'
            devkit_utils.execute_steam_client_command(cmd)
            try:
                with devkit_utils.wait_on_file_response(response) as success_response:
                    logger.info('success')
                    sys.stdout.write(success_response)
                    sys.exit(0)
            except devkit_utils.SteamResponse_Timeout:
                logger.error('timeout')
            except devkit_utils.SteamResponse_Error as e:
                logger.error('failed')
                sys.stdout.write(e.error_response)
                sys.exit(-1)
