fix: print config hint when logs token is missing

--once --logs now exits 2 with a clear pointer to SHUSUB2_LOGS_TOKEN /
~/.config/shusub2/logs-token instead of a raw HTTP 401 traceback; the TUI
logs page reuses the same hint.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 02:24:41 +08:00
parent b68d801024
commit 7d78f1ab63
2 changed files with 31 additions and 4 deletions
+11 -4
View File
@@ -906,10 +906,7 @@ def run_textual(
def refresh_data(self) -> None:
status = self.query_one("#status", Static)
if not str(logs_token or "").strip():
status.update(
"logs token not configured: set SHUSUB2_LOGS_TOKEN or write the Sub2API admin API key to "
f"{logs_token_config_file_path()}"
)
status.update(logs_token_hint())
return
status.update("refreshing logs...")
try:
@@ -972,6 +969,13 @@ def run_textual(
return 0
def logs_token_hint() -> str:
return (
"logs token not configured: set SHUSUB2_LOGS_TOKEN or write the Sub2API admin API key to "
f"{logs_token_config_file_path()}"
)
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Sub2API quota and daily usage TUI")
parser.add_argument("--api-url", default=default_api_url())
@@ -1034,6 +1038,9 @@ def main(argv: list[str] | None = None) -> int:
if version_message:
print(version_message)
if args.logs:
if not str(args.logs_token or "").strip():
print(logs_token_hint(), file=sys.stderr)
return 2
print_logs_once(fetch_logs_payload(args.logs_url, args.logs_token, args.timeout, logs_limit), args.filter)
return 0
status_payload, status_error = fetch_optional_payload(status_url, args.timeout)