Fixed chmod issues with launcher updater.

This commit is contained in:
2026-08-30 22:06:52 +02:00
parent 94a5e81555
commit 562c924809
4 changed files with 225 additions and 2 deletions

View File

@@ -21,7 +21,12 @@ from ptdiag.logs import (
from . import __version__
from .command import CommandError, CommandRunner
from .depot import SyncProgress, sync_managed_game
from .depot import (
SyncProgress,
read_cached_depot_launch_catalog,
select_depot_start_option,
sync_managed_game,
)
from .doctor import inspect_host
from .download import OFFICIAL_LAUNCHER_URL, fetch_official_launcher
from .importer import GameImportResult, discover_existing_game, import_existing_game
@@ -148,6 +153,10 @@ def build_parser() -> argparse.ArgumentParser:
play = subparsers.add_parser("play", help="launch the game in the managed Proton window")
play.add_argument("--game-dir", type=Path)
play.add_argument(
"--realm",
help="launch an available realm from the last official depot manifest",
)
play.add_argument("--no-box", action="store_true", help="launch without X11 window styling")
play.add_argument(
"--publisher-dll",
@@ -297,6 +306,7 @@ def main(argv: Sequence[str] | None = None) -> int:
arguments.dry_run,
arguments.skip_runtime_setup,
arguments.json,
realm=arguments.realm,
)
if command == "login-trace":
return _login_trace(
@@ -708,6 +718,8 @@ def _play(
dry_run: bool,
skip_runtime_setup: bool,
as_json: bool,
*,
realm: str | None = None,
) -> int:
with _play_guard(paths, dry_run) as play_lease:
return _play_locked(
@@ -717,6 +729,7 @@ def _play(
dry_run,
skip_runtime_setup,
as_json,
realm=realm,
reuse_prepared=not play_lease.preparation_allowed,
before_game=play_lease.allow_shared_clients,
)
@@ -730,6 +743,7 @@ def _play_locked(
skip_runtime_setup: bool,
as_json: bool,
*,
realm: str | None = None,
reuse_prepared: bool = False,
before_game: Callable[[], None] | None = None,
) -> int:
@@ -739,6 +753,10 @@ def _play_locked(
"run pristontale-eu update before playing"
)
settings = _load_or_default_settings(paths, persist=not dry_run)
start_option = select_depot_start_option(
read_cached_depot_launch_catalog(paths.depot_launch_catalog_cache),
realm or settings.realm,
)
source = _source_game(paths, settings, game_dir)
overlay = None
_print_operation_status(
@@ -799,6 +817,7 @@ def _play_locked(
settings,
selection,
runner,
start_option=start_option,
use_gamebox=not no_box,
)
except KeyboardInterrupt:
@@ -826,6 +845,7 @@ def _play_locked(
"ok": outcome.returncode == 0,
"dry_run": dry_run,
"runtime": asdict(selection),
"realm": asdict(start_option),
"runtime_view": asdict(overlay) if overlay else None,
"setup_commands": [asdict(result) for result in setup_results],
"game": asdict(outcome),