diff --git a/scripts/launch_sdio.py b/scripts/launch_sdio.py new file mode 100644 index 00000000..e650ece8 --- /dev/null +++ b/scripts/launch_sdio.py @@ -0,0 +1,86 @@ +"""WizardKit: Launch Snappy Driver Installer Origin""" +# vim: sts=2 sw=2 ts=2 + +import os +import sys + +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +import wk # pylint: disable=wrong-import-position +from wk.cfg.net import SDIO_SERVER + +# STATIC VARIABLES +MOUNT_EXCEPTIONS = ( + RuntimeError, + wk.exe.subprocess.CalledProcessError, + ) +SDIO_LOCAL_PATH = wk.kit.tools.get_tool_path("SDIO", "SDIO") +SDIO_REMOTE_PATH = wk.io.get_path_obj( + ( + fr'\\{SDIO_SERVER["Address"]}\{SDIO_SERVER["Share"]}\{SDIO_SERVER["Path"]}' + fr'\SDIO{"64" if wk.os.win.ARCH == "64" else ""}.exe' + ), + resolve=False, + ) + +# Functions +def try_again(): + """Ask to try again or quit.""" + if wk.std.ask(' Try again?'): + return True + if not wk.std.ask(' Use local version?'): + wk.std.abort() + return False + + +def use_network_sdio(): + """Try to mount SDIO server.""" + def _mount_server(): + print('Connecting to server... (Press CTRL+c to use local copy)') + return wk.net.mount_network_share(SDIO_SERVER, read_write=False) + + use_network = False + while True: + try: + proc = _mount_server() + except KeyboardInterrupt: + break + except MOUNT_EXCEPTIONS as err: + wk.std.print_error(f' {err}') + if not try_again(): + break + else: + if proc.returncode == 0: + # Network copy available + use_network = True + break + + # Failed to mount + wk.std.print_error(' Failed to mount server') + if not try_again(): + break + + # Done + return use_network + + +if __name__ == '__main__': + wk.std.set_title(f'{wk.cfg.main.KIT_NAME_FULL}: Snappy Driver Installer Origin Launcher') + log_dir = wk.log.format_log_path(tool=True).parent + use_network = False + + # Try to mount server + try: + use_network = use_network_sdio() + except KeyboardInterrupt: + wk.std.abort() + + # Run SDIO + exe_path = SDIO_LOCAL_PATH + if use_network: + exe_path = SDIO_REMOTE_PATH + print('Using network copy!') + else: + print('Using local copy!') + cmd = [exe_path, '-log_dir', log_dir] + wk.exe.run_program(cmd, check=False, cwd=exe_path.parent) diff --git a/scripts/wk/cfg/launchers.py b/scripts/wk/cfg/launchers.py index a03c7ef9..4a33e939 100644 --- a/scripts/wk/cfg/launchers.py +++ b/scripts/wk/cfg/launchers.py @@ -24,10 +24,10 @@ LAUNCHERS = { 'L_ELEV': 'True', }, '3) Snappy Driver Installer Origin': { - 'L_TYPE': 'Executable', - 'L_PATH': 'SDIO', - 'L_ITEM': 'SDIO.exe', - 'L_ARGS': r'-log_dir "%client_dir%\Logs\Tools"', + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'launch_sdio.py', + 'L_ELEV': 'True', }, '4) Auto Setup': { 'L_TYPE': 'PyScript', diff --git a/scripts/wk/cfg/net.py b/scripts/wk/cfg/net.py index 7c517bfe..71fd5241 100644 --- a/scripts/wk/cfg/net.py +++ b/scripts/wk/cfg/net.py @@ -28,6 +28,13 @@ CRASH_SERVER = { #'Pass': '', #'Headers': {'X-Requested-With': 'XMLHttpRequest'}, } +SDIO_SERVER = { + #'Address': '10.0.0.10', + #'Share': 'Share', + #'Path': 'SDIO', + #'RO-User': '', + #'RO-Pass': '', + } if __name__ == '__main__':