Add wk_debug.py
This commit is contained in:
parent
2c9e56e830
commit
bb43c7447d
2 changed files with 78 additions and 0 deletions
5
scripts/wk-debug
Executable file
5
scripts/wk-debug
Executable file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
## WizardKit: Debug Launcher
|
||||||
|
|
||||||
|
python3 -i wk_debug.py
|
||||||
73
scripts/wk_debug.py
Executable file
73
scripts/wk_debug.py
Executable file
|
|
@ -0,0 +1,73 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""WizardKit: Debug Launcher"""
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
# vim: sts=2 sw=2 ts=2
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import pickle
|
||||||
|
import sys
|
||||||
|
|
||||||
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
sys.path.append(os.getcwd())
|
||||||
|
import wk # pylint: disable=wrong-import-position
|
||||||
|
|
||||||
|
|
||||||
|
# STATIC VARIABLES
|
||||||
|
OPTIONS = {
|
||||||
|
'Cloning / Imaging': 'ddrescue-TUI',
|
||||||
|
'Hardware Diagnostics': 'Hardware-Diagnostics',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_debug_prefix() -> str:
|
||||||
|
"""Ask what we're debugging, returns log dir prefix."""
|
||||||
|
menu = wk.std.Menu(title=f'{wk.cfg.main.KIT_NAME_FULL}: Debugging Menu\n')
|
||||||
|
for name, prefix in OPTIONS.items():
|
||||||
|
menu.add_option(name, {'Prefix': prefix})
|
||||||
|
selection = menu.simple_select()
|
||||||
|
return selection[1]['Prefix']
|
||||||
|
|
||||||
|
def get_debug_path() -> pathlib.Path:
|
||||||
|
"""Get debug path."""
|
||||||
|
log_dir = pathlib.Path('~/Logs').expanduser().resolve()
|
||||||
|
debug_paths = []
|
||||||
|
prefix = get_debug_prefix()
|
||||||
|
|
||||||
|
# Build list of options
|
||||||
|
for item in log_dir.iterdir():
|
||||||
|
if item.is_dir() and item.name.startswith(prefix):
|
||||||
|
debug_paths.append(item.joinpath('debug'))
|
||||||
|
debug_paths = [item for item in debug_paths if item.exists()]
|
||||||
|
debug_paths.sort()
|
||||||
|
|
||||||
|
# Safety check
|
||||||
|
if not debug_paths:
|
||||||
|
wk.std.abort('No logs found, aborting.')
|
||||||
|
|
||||||
|
# Use latest option
|
||||||
|
if wk.std.ask('Use latest session?'):
|
||||||
|
return debug_paths[-1]
|
||||||
|
|
||||||
|
# Select from list
|
||||||
|
menu = wk.std.Menu(title=f'{wk.cfg.main.KIT_NAME_FULL}: Debugging Menu\n')
|
||||||
|
for item in debug_paths:
|
||||||
|
menu.add_option(item.parent.name, {'Path': item})
|
||||||
|
selection = menu.simple_select()
|
||||||
|
|
||||||
|
# Done
|
||||||
|
return selection[1]['Path']
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# Leaving this at the global level
|
||||||
|
try:
|
||||||
|
debug_path = get_debug_path()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
state = None
|
||||||
|
|
||||||
|
# Load pickle
|
||||||
|
with open(debug_path.joinpath('state.pickle'), 'rb') as f:
|
||||||
|
state = pickle.load(f)
|
||||||
Loading…
Reference in a new issue