Refactor SDIO sections

* Use the same code paths for the launcher and AutoSetup
* Local copy now has a different theme to differentiate
This commit is contained in:
2Shirt 2023-11-11 17:45:28 -08:00
parent 5bc29b1e6e
commit 3f090ee968
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
4 changed files with 67 additions and 82 deletions

View file

@ -1,91 +1,15 @@
"""WizardKit: Launch Snappy Driver Installer Origin""" """WizardKit: Launch Snappy Driver Installer Origin"""
# vim: sts=2 sw=2 ts=2 # vim: sts=2 sw=2 ts=2
from subprocess import CompletedProcess
import wk import wk
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 # Functions
def try_again() -> bool:
"""Ask to try again or quit."""
if wk.ui.cli.ask(' Try again?'):
return True
if not wk.ui.cli.ask(' Use local version?'):
wk.ui.cli.abort()
return False
def use_network_sdio() -> bool:
"""Try to mount SDIO server."""
use_network = False
def _mount_server() -> CompletedProcess:
print('Connecting to server... (Press CTRL+c to use local copy)')
return wk.net.mount_network_share(SDIO_SERVER, read_write=False)
# Bail early
if not SDIO_SERVER['Address']:
return use_network
# Main loop
while True:
try:
proc = _mount_server()
except KeyboardInterrupt:
break
except MOUNT_EXCEPTIONS as err:
wk.ui.cli.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.ui.cli.print_error(' Failed to mount server')
if not try_again():
break
# Done
return use_network
if __name__ == '__main__': if __name__ == '__main__':
wk.ui.cli.set_title( wk.ui.cli.set_title(
f'{wk.cfg.main.KIT_NAME_FULL}: Snappy Driver Installer Origin Launcher', f'{wk.cfg.main.KIT_NAME_FULL}: Snappy Driver Installer Origin Launcher',
) )
log_dir = wk.log.format_log_path(tool=True).parent log_dir = wk.log.format_log_path(tool=True).parent
USE_NETWORK = False sdio_path = wk.kit.tools.get_sdio_path(interactive=True)
cmd = [sdio_path, '-log_dir', log_dir]
# Try to mount server wk.exe.run_program(cmd, check=False, cwd=sdio_path.parent)
try:
USE_NETWORK = use_network_sdio()
except KeyboardInterrupt:
wk.ui.cli.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)

View file

@ -6,14 +6,18 @@ import pathlib
import platform import platform
from datetime import datetime, timedelta from datetime import datetime, timedelta
from subprocess import CompletedProcess, Popen from subprocess import CalledProcessError, CompletedProcess, Popen
import requests import requests
from wk.cfg.main import ARCHIVE_PASSWORD from wk.cfg.main import ARCHIVE_PASSWORD
from wk.cfg.net import SDIO_SERVER
from wk.cfg.sources import DOWNLOAD_FREQUENCY, SOURCES from wk.cfg.sources import DOWNLOAD_FREQUENCY, SOURCES
from wk.exe import popen_program, run_program from wk.exe import popen_program, run_program
from wk.io import get_path_obj
from wk.net import mount_network_share
from wk.std import GenericError, sleep from wk.std import GenericError, sleep
from wk.ui.cli import abort, ask, print_error
# STATIC VARIABLES # STATIC VARIABLES
@ -25,6 +29,14 @@ HEADERS = {
'Gecko/20100101 Firefox/97.0' 'Gecko/20100101 Firefox/97.0'
), ),
} }
MOUNT_EXCEPTIONS = (RuntimeError, CalledProcessError)
SDIO_REMOTE_PATH = get_path_obj(
(
fr'\\{SDIO_SERVER["Address"]}\{SDIO_SERVER["Share"]}\{SDIO_SERVER["Path"]}'
fr'\SDIO{"64" if ARCH == "64" else ""}.exe'
),
resolve=False,
)
# "GLOBAL" VARIABLES # "GLOBAL" VARIABLES
@ -203,6 +215,51 @@ def get_tool_path(folder, name, check=True, suffix=None) -> pathlib.Path:
return tool_path return tool_path
def get_sdio_path(interactive: bool) -> pathlib.Path:
"""Try to mount SDIO server."""
use_network = False
sdio_path = get_tool_path("SDIO", "SDIO")
def _mount_server() -> CompletedProcess:
print('Connecting to server... (Press CTRL+c to use local copy)')
return mount_network_share(SDIO_SERVER, read_write=False)
def _try_again(error_msg: str) -> bool:
"""Ask to try again or quit."""
print_error(error_msg)
if ask(' Try again?'):
return True
if not ask(' Use local version?'):
abort()
return False
# Bail early
if not SDIO_SERVER['Address']:
return sdio_path
# Main loop
while True:
try:
proc = _mount_server()
except KeyboardInterrupt:
break
except MOUNT_EXCEPTIONS as err:
if not (interactive and _try_again(f' ERROR: {err}')):
break
else:
if proc.returncode == 0:
# Network copy available
use_network = True
break
# Failed to mount
if not (interactive and _try_again(' Failed to mount server')):
break
# Done
if use_network:
sdio_path = SDIO_REMOTE_PATH
return sdio_path
def run_tool( def run_tool(
folder, name, *run_args, folder, name, *run_args,
cbin=False, cwd=False, download=False, popen=False, cbin=False, cwd=False, download=False, popen=False,

View file

@ -32,6 +32,7 @@ from wk.kit.tools import (
extract_archive, extract_archive,
extract_tool, extract_tool,
find_kit_dir, find_kit_dir,
get_sdio_path,
get_tool_path, get_tool_path,
run_tool, run_tool,
) )
@ -1098,7 +1099,10 @@ def open_microsoft_store_updates() -> None:
def open_snappy_driver_installer_origin() -> None: def open_snappy_driver_installer_origin() -> None:
"""Open Snappy Driver Installer Origin.""" """Open Snappy Driver Installer Origin."""
run_tool('SDIO', 'SDIO', cwd=True, pipe=True, popen=True) sdio_path = get_sdio_path(interactive=False)
log_dir = format_log_path(tool=True).parent
cmd = [sdio_path, '-log_dir', log_dir]
popen_program(cmd, check=False, cwd=sdio_path.parent)
def open_windows_activation() -> None: def open_windows_activation() -> None:

View file

@ -9,7 +9,7 @@
"-finish_upd_cmd:" "-finish_upd_cmd:"
"-lang:English" "-lang:English"
"-theme:Coax" "-theme:Dark"
-hintdelay:250 -hintdelay:250
-license:1 -license:1
-scale:256 -scale:256