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:
parent
5bc29b1e6e
commit
3f090ee968
4 changed files with 67 additions and 82 deletions
|
|
@ -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)
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue