cimery 실행 가이드

cimery 개발·테스트·배포에 필요한 모든 실행 명령 레퍼런스. 작업 디렉터리는 항상 d:/myObsidian/ParaWiki/cimery/ 기준.


전제 조건

항목버전비고
Ruststable 최신rustup update
wasm-pack최신WASM 빌드 시만 필요
OpenCASCADE (OCCT)7.7+--features occt 시만 필요. VS Dev Cmd 필수

빌드 & 컴파일 확인

# 전체 워크스페이스 컴파일 확인 (가장 빠름)
cargo check --workspace
 
# 전체 빌드
cargo build --workspace
 
# OcctKernel 포함 빌드 (VS Developer Command Prompt에서)
cargo build -p cimery-kernel --features occt
 
# 릴리스 빌드
cargo build --release -p cimery-viewer

테스트

# 전체 워크스페이스 테스트
cargo test --workspace
 
# kernel 테스트만 (4층: insta 스냅샷·기하 불변량·크로스체크·proptest)
cargo test -p cimery-kernel
 
# 특정 layer만
cargo test -p cimery-kernel --test layer1_snapshots
cargo test -p cimery-kernel --test layer2_invariants
cargo test -p cimery-kernel --test layer3_cross_check
cargo test -p cimery-kernel --test layer4_proptest
 
# OcctKernel 크로스체크 포함 (--features occt 필요)
cargo test -p cimery-kernel --features occt
 
# 특정 크레이트
cargo test -p cimery-core
cargo test -p cimery-ir
cargo test -p cimery-dsl
cargo test -p cimery-incremental
cargo test -p cimery-usd

insta 스냅샷 업데이트

IR 구조가 바뀌어 스냅샷을 갱신해야 할 때:

# 새 스냅샷을 .snap.new 로 생성
INSTA_UPDATE=new cargo test -p cimery-kernel --test layer1_snapshots
 
# .snap.new → .snap 수동 승인 (cargo-insta 미설치 시)
cd crates/kernel/tests/snapshots
for f in *.snap.new; do mv "$f" "${f%.new}"; done
 
# 또는 cargo-insta 설치 후
cargo install cargo-insta
cargo insta review

뷰어 실행

# PureRustKernel (기본, OCCT 불필요)
cargo run -p cimery-viewer
 
# OcctKernel 포함 (VS Dev Cmd에서)
cargo run -p cimery-viewer --features cimery-kernel/occt
 
# 릴리스 빌드로 실행 (성능 향상)
cargo run --release -p cimery-viewer

뷰어 단축키

동작
FZoomExtents (전체 씬 맞추기)
1정면뷰
3측면뷰
7평면뷰
0투시뷰
마우스 휠
마우스 중간버튼 드래그
우클릭 드래그궤도 회전
EnterApply (파라미터 적용)
Ctrl+S프로젝트 저장
Ctrl+O프로젝트 열기

USD 익스포트

# cimery-usd 크레이트 직접 실행
cargo run -p cimery-usd
 
# 출력: out/bridge_scene.usda (기본 경로)

USD 파일 구조

#usda 1.0
def Xform "BridgeScene" {
    def Xform "Girders" { ... }
    def Xform "DeckSlabs" { ... }
    def Xform "Bearings" { ... }
    def Xform "Piers" { ... }
    def Xform "Abutments" { ... }
    def Xform "CrossBeams" { ... }
    def Xform "ExpansionJoints" { ... }
}

WASM / PWA 빌드

# wasm-pack으로 viewer 빌드
wasm-pack build crates/viewer --target web --features wasm
 
# 출력 디렉터리: crates/viewer/pkg/
# Cloudflare Pages 배포: .github/workflows/wasm.yml 참조

CI/CD

워크플로경로트리거내용
Gitea CI.gitea/workflows/ci.ymlpush/PRcheck → test → clippy → fmt
GitHub CI.github/workflows/ci.ymlpush/PR멀티플랫폼(Ubuntu·Windows·macOS), OCCT 조건부
GitHub Release.github/workflows/release.ymlv* 태그바이너리 빌드 + GitHub Release 업로드
WASM Deploy.github/workflows/wasm.ymlmain pushwasm-pack 빌드 + Cloudflare Pages 배포
# 릴리스 태그 생성 (자동 빌드 트리거)
git tag v0.1.0
git push origin v0.1.0

크레이트 의존 관계

core → ir → { dsl, kernel, usd } → incremental → evaluator
                                               ↓
                                            viewer
크레이트역할
cimery-core단위 타입(Mm·M), 도메인 열거형
cimery-irIR 구조체 + serde JSON 직렬화
cimery-dslFeature 빌더 + 검증
cimery-kernelGeomKernel trait + StubKernel + PureRustKernel + OcctKernel
cimery-incrementaldirty-tracking 증분 캐시
cimery-evaluatorIR → kernel 연결 레이어
cimery-usdUSD 텍스트 익스포터
cimery-viewerwgpu + egui 3D 뷰어
cimery-appTauri v2 데스크톱 래퍼 (개발 중)

프로젝트 파일 (.cimery)

뷰어에서 저장하는 JSON 포맷:

{
  "version": 1,
  "span_m": 40.0,
  "girder_count": 5,
  "girder_spacing_mm": 2500.0,
  "girder_height_mm": 1800.0,
  "slab_thickness_mm": 220.0,
  "show_cross_beams": true,
  "cross_beam_interval_m": 5.0,
  "show_expansion_joints": true
}

저장/불러오기: 뷰어 SidePanel → ▼ 프로젝트 → 저장 / 열기


자주 쓰는 커맨드 조합

# 개발 루프: 변경 후 즉시 확인
cargo check -p cimery-kernel && cargo test -p cimery-kernel && cargo run -p cimery-viewer
 
# 커밋 전 전체 검증
cargo test --workspace && cargo clippy --workspace -- -D warnings
 
# 새 crate 추가 후 workspace 등록 확인
cargo check --workspace

아키텍처

cimery-app (Tauri v2)
  │  WebView: frontend/index.html  ← 런처 UI (다크 테마)
  │  IPC: #[tauri::command]        ← commands.rs
  │
  └─ cimery-viewer (사이드카)
       egui+wgpu 3D 뷰어 (기존 바이너리)
       exe/앱 번들과 같은 디렉터리에서 탐색 → PATH fallback

다음 빌드 명령

# 뷰어 먼저 릴리스 빌드 (앱과 같은 디렉터리에 복사 필요)
cargo build --release -p cimery-viewer
 
# Tauri 개발 서버 (설치 없이 실행)
```bash
cd cimery/crates/app
cargo tauri dev
cargo tauri dev -p cimery-app

# 설치 파일 생성 (Win: .msi/.exe, macOS: .dmg, Linux: .deb)
cargo tauri build -p cimery-app

관련 문서

  • cimery 아키텍처 개요 (미작성 — ADR-001 참조)
  • Output/guides/cimery-dev-guide.md — 상세 개발 지침
  • Output/reports/ADR-001-tech-stack.md — 기술 스택 결정
  • Output/reports/ADR-002-feature-dsl.md — Feature DSL 아키텍처
  • Output/reports/ADR-003-architecture-followups.md — 후속 12개 결정