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()
|
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.
|
See [classic port notes](docs/classic-port-notes.md) for the current direction.
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ src/coolrl_lost_cities/
|
|||||||
fixtures/
|
fixtures/
|
||||||
assets/
|
assets/
|
||||||
docs/
|
docs/
|
||||||
rust_core/
|
rust/
|
||||||
|
lost-cities-core/
|
||||||
|
proto/
|
||||||
|
lost_cities.proto
|
||||||
```
|
```
|
||||||
|
|
||||||
Tests should live outside the package, roughly under:
|
Tests should live outside the package, roughly under:
|
||||||
|
|||||||
@@ -39,10 +39,4 @@ include = ["coolrl_lost_cities*"]
|
|||||||
"assets/*.json",
|
"assets/*.json",
|
||||||
"fixtures/*.json",
|
"fixtures/*.json",
|
||||||
"docs/*.md",
|
"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");
|
let protoc = protoc_bin_vendored::protoc_bin_path().expect("vendored protoc");
|
||||||
std::env::set_var("PROTOC", 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");
|
let proto_file = proto_dir.join("lost_cities.proto");
|
||||||
|
|
||||||
println!("cargo:rerun-if-changed={}", proto_file.display());
|
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
|
from .common import snapshot_from_trace, snapshot_summary
|
||||||
|
|
||||||
LOGGER = logging.getLogger("coolrl_lost_cities.games.classic.backends.rust")
|
LOGGER = logging.getLogger("coolrl_lost_cities.games.classic.backends.rust")
|
||||||
|
RUST_CORE_DIR = Path(__file__).resolve().parents[5] / "rust" / "lost-cities-core"
|
||||||
|
|
||||||
|
|
||||||
class RustLostCitiesBackend:
|
class RustLostCitiesBackend:
|
||||||
@@ -70,7 +71,6 @@ class RustLostCitiesBackend:
|
|||||||
"steps": [{"action": None}]
|
"steps": [{"action": None}]
|
||||||
+ [{"action": action} for action in self.actions],
|
+ [{"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:
|
with tempfile.NamedTemporaryFile("w", suffix=".json", delete=False) as handle:
|
||||||
json.dump(fixture, handle)
|
json.dump(fixture, handle)
|
||||||
fixture_path = Path(handle.name)
|
fixture_path = Path(handle.name)
|
||||||
@@ -86,7 +86,7 @@ class RustLostCitiesBackend:
|
|||||||
"trace",
|
"trace",
|
||||||
str(fixture_path),
|
str(fixture_path),
|
||||||
],
|
],
|
||||||
cwd=rust_core,
|
cwd=RUST_CORE_DIR,
|
||||||
check=True,
|
check=True,
|
||||||
text=True,
|
text=True,
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import subprocess
|
|||||||
|
|
||||||
import coolrl_lost_cities.games.classic as classic
|
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.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
|
LOST_CITIES_DIR = Path(classic.__file__).resolve().parent
|
||||||
FIXTURE_DIR = LOST_CITIES_DIR / "fixtures"
|
FIXTURE_DIR = LOST_CITIES_DIR / "fixtures"
|
||||||
RUST_CORE_DIR = LOST_CITIES_DIR / "rust_core"
|
|
||||||
|
|
||||||
|
|
||||||
def _run_probe(*args: str) -> dict:
|
def _run_probe(*args: str) -> dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user