#!/usr/bin/env python3 import os import logging import argparse import tempfile import json from urllib.parse import quote_plus as urllib_quote_plus import devkit_utils logging.basicConfig(format='%(message)s', level=logging.DEBUG) logger = logging.getLogger(__name__) DEVKIT_TOOL_FOLDER = os.path.expanduser('~/devkit-game') if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--verbose', required=False, action='store_true') parser.add_argument('--appid', required=False, action='store') parser.add_argument('--gameid', required=False, action='store') conf = parser.parse_args() if conf.verbose: logger.setLevel(logging.DEBUG) else: logger.setLevel(logging.INFO) ret = {} try: devkit_utils.validate_steam_client() except devkit_utils.SteamClientNotRunningException as e: skipping = 'The Steam client is not running.' logger.warning(skipping) ret['error'] = skipping else: with tempfile.TemporaryDirectory(prefix='controller-config') as tempdir: response = os.path.join(tempdir, 'dumpcontrollerconfig') cmd = f'dumpcontrollerconfig?response={urllib_quote_plus(response)}' if conf.appid: cmd += f'&appid={conf.appid}' if conf.gameid: cmd += f'&gameid={conf.gameid}' logger.debug(f'command: {cmd}') devkit_utils.execute_steam_client_command(cmd) try: with devkit_utils.wait_on_file_response(response) as success_response: logger.debug(success_response) ret['success'] = success_response except devkit_utils.SteamResponse_Timeout: ret['error'] = 'timeout - Steam did not respond to the command request' except devkit_utils.SteamResponse_Error as e: ret['error'] = e.error_response # response gets written out to stdout print(json.dumps(ret))