mirror of
https://github.com/lWolvesl/claw-code.git
synced 2026-04-02 21:31:52 +08:00
78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
import platform
|
|
import sys
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
from .deferred_init import DeferredInitResult, run_deferred_init
|
|
from .prefetch import PrefetchResult, start_keychain_prefetch, start_mdm_raw_read, start_project_scan
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class WorkspaceSetup:
|
|
python_version: str
|
|
implementation: str
|
|
platform_name: str
|
|
test_command: str = 'python3 -m unittest discover -s tests -v'
|
|
|
|
def startup_steps(self) -> tuple[str, ...]:
|
|
return (
|
|
'start top-level prefetch side effects',
|
|
'build workspace context',
|
|
'load mirrored command snapshot',
|
|
'load mirrored tool snapshot',
|
|
'prepare parity audit hooks',
|
|
'apply trust-gated deferred init',
|
|
)
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class SetupReport:
|
|
setup: WorkspaceSetup
|
|
prefetches: tuple[PrefetchResult, ...]
|
|
deferred_init: DeferredInitResult
|
|
trusted: bool
|
|
cwd: Path
|
|
|
|
def as_markdown(self) -> str:
|
|
lines = [
|
|
'# Setup Report',
|
|
'',
|
|
f'- Python: {self.setup.python_version} ({self.setup.implementation})',
|
|
f'- Platform: {self.setup.platform_name}',
|
|
f'- Trusted mode: {self.trusted}',
|
|
f'- CWD: {self.cwd}',
|
|
'',
|
|
'Prefetches:',
|
|
*(f'- {prefetch.name}: {prefetch.detail}' for prefetch in self.prefetches),
|
|
'',
|
|
'Deferred init:',
|
|
*self.deferred_init.as_lines(),
|
|
]
|
|
return '\n'.join(lines)
|
|
|
|
|
|
def build_workspace_setup() -> WorkspaceSetup:
|
|
return WorkspaceSetup(
|
|
python_version='.'.join(str(part) for part in sys.version_info[:3]),
|
|
implementation=platform.python_implementation(),
|
|
platform_name=platform.platform(),
|
|
)
|
|
|
|
|
|
def run_setup(cwd: Path | None = None, trusted: bool = True) -> SetupReport:
|
|
root = cwd or Path(__file__).resolve().parent.parent
|
|
prefetches = [
|
|
start_mdm_raw_read(),
|
|
start_keychain_prefetch(),
|
|
start_project_scan(root),
|
|
]
|
|
return SetupReport(
|
|
setup=build_workspace_setup(),
|
|
prefetches=tuple(prefetches),
|
|
deferred_init=run_deferred_init(trusted=trusted),
|
|
trusted=trusted,
|
|
cwd=root,
|
|
)
|