Rust 크레이트를 루트로 이동
맥락: - GUI 이식 전에 Rust crate와 proto schema 위치를 Python package 내부에서 분리한다. - Cargo 작업, IDE 인식, 빌드 산출물 관리를 루트 구조에 맞춘다. 변경: - rust_core를 rust/lost-cities-core로 이동하고 proto/lost_cities.proto를 루트 proto 디렉터리로 옮겼다. - Rust build.rs, Python Rust backend, Rust parity 테스트의 경로를 새 위치로 수정했다. - Python package-data에서 Rust crate와 proto 항목을 제거하고 README/port notes를 갱신했다. 확인: - uv sync --extra gui --reinstall-package coolrl-lost-cities - uv run pytest tests/games/classic - uv run lost-cities-classic
This commit is contained in:
@@ -50,4 +50,11 @@ backend = build_backend("python", classic_config(), seed=1)
|
||||
snapshot = backend.snapshot()
|
||||
```
|
||||
|
||||
Rust sources live outside the Python package:
|
||||
|
||||
```text
|
||||
rust/lost-cities-core/
|
||||
proto/lost_cities.proto
|
||||
```
|
||||
|
||||
See [classic port notes](docs/classic-port-notes.md) for the current direction.
|
||||
|
||||
@@ -30,7 +30,10 @@ src/coolrl_lost_cities/
|
||||
fixtures/
|
||||
assets/
|
||||
docs/
|
||||
rust_core/
|
||||
rust/
|
||||
lost-cities-core/
|
||||
proto/
|
||||
lost_cities.proto
|
||||
```
|
||||
|
||||
Tests should live outside the package, roughly under:
|
||||
|
||||
@@ -39,10 +39,4 @@ include = ["coolrl_lost_cities*"]
|
||||
"assets/*.json",
|
||||
"fixtures/*.json",
|
||||
"docs/*.md",
|
||||
"schemas/*.proto",
|
||||
"rust_core/Cargo.lock",
|
||||
"rust_core/Cargo.toml",
|
||||
"rust_core/build.rs",
|
||||
"rust_core/src/*.rs",
|
||||
"rust_core/src/bin/*.rs",
|
||||
]
|
||||
|
||||
Generated
+1
-1
@@ -4,7 +4,7 @@ fn main() {
|
||||
let protoc = protoc_bin_vendored::protoc_bin_path().expect("vendored protoc");
|
||||
std::env::set_var("PROTOC", protoc);
|
||||
|
||||
let proto_dir = PathBuf::from("../schemas");
|
||||
let proto_dir = PathBuf::from("../../proto");
|
||||
let proto_file = proto_dir.join("lost_cities.proto");
|
||||
|
||||
println!("cargo:rerun-if-changed={}", proto_file.display());
|
||||
@@ -12,6 +12,7 @@ from ..interfaces import BackendName, Snapshot
|
||||
from .common import snapshot_from_trace, snapshot_summary
|
||||
|
||||
LOGGER = logging.getLogger("coolrl_lost_cities.games.classic.backends.rust")
|
||||
RUST_CORE_DIR = Path(__file__).resolve().parents[5] / "rust" / "lost-cities-core"
|
||||
|
||||
|
||||
class RustLostCitiesBackend:
|
||||
@@ -70,7 +71,6 @@ class RustLostCitiesBackend:
|
||||
"steps": [{"action": None}]
|
||||
+ [{"action": action} for action in self.actions],
|
||||
}
|
||||
rust_core = Path(__file__).resolve().parents[1] / "rust_core"
|
||||
with tempfile.NamedTemporaryFile("w", suffix=".json", delete=False) as handle:
|
||||
json.dump(fixture, handle)
|
||||
fixture_path = Path(handle.name)
|
||||
@@ -86,7 +86,7 @@ class RustLostCitiesBackend:
|
||||
"trace",
|
||||
str(fixture_path),
|
||||
],
|
||||
cwd=rust_core,
|
||||
cwd=RUST_CORE_DIR,
|
||||
check=True,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
|
||||
@@ -5,11 +5,11 @@ import subprocess
|
||||
|
||||
import coolrl_lost_cities.games.classic as classic
|
||||
from coolrl_lost_cities.games.classic.game import GameState, LostCitiesConfig, build_deck
|
||||
from coolrl_lost_cities.games.classic.backends.rust import RUST_CORE_DIR
|
||||
|
||||
|
||||
LOST_CITIES_DIR = Path(classic.__file__).resolve().parent
|
||||
FIXTURE_DIR = LOST_CITIES_DIR / "fixtures"
|
||||
RUST_CORE_DIR = LOST_CITIES_DIR / "rust_core"
|
||||
|
||||
|
||||
def _run_probe(*args: str) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user