CLI는 단일 파일과 패키지에 같은 파싱, 모듈 해석, 정적 검사를 적용합니다. 명령은 이 공통 관문을 먼저 지납니다. 그다음에 각자 할 일을 선택합니다.
검사 전에 서식 확인하기
리뷰와 자동화에서는 fmt --check를 사용합니다. 정본 서식과 다른 파일을 모두
알려 주고 0이 아닌 상태로 끝납니다. 파일을 쓰지는 않습니다.
topaz fmt --check --root my-app
topaz fmt --root my-app
두 번째 명령으로 서식을 적용한 뒤 첫 명령을 다시 실행하세요. 패키지 모드는 벤더링한 의존성과 빌드 출력을 건너뜁니다.
실행 없이 검사하기
topaz check main.tpz
topaz check --root my-app --locked
topaz check --format json main.tpz
검사에 문제가 없으면 종료 코드는 0입니다. 진단에는 소스 위치, 안정적인 TPZ####
코드, 요약, 필요한 세부 정보가 들어갑니다. JSON 모드는 도구가 읽을 수 있는
안정적인 진단을 출력합니다. 검사는 사용자 코드를 실행하지 않으며 배포 산출물도
쓰지 않습니다.
topaz explain TPZ5021
topaz explain TPZ5021 --json
첫 진단을 고친 뒤 check를 다시 실행하세요. 뒤에 나온 오류는 첫 오류 때문에
생겼을 수 있습니다. explain은 알려진 코드를 자세히 설명하지만 소스를 바꾸지
않습니다.
테스트와 실행
topaz test --root my-app --locked
topaz test tests/summary.tpz --root my-app --locked
topaz run --root my-app --locked
topaz run main.tpz -- arg1 arg2
test는 검사를 마친 결정적 테스트 호스트를 사용합니다. 단언이 실패하거나 정적
진단, 런타임 결함이 나오면 종료 코드는 0이 아닙니다. --root와 함께 테스트
파일을 지정하면 패키지 매니페스트, 잠금 파일, 모듈, 의존성을 그대로 사용합니다.
run은 검사를 마친 명령형 진입점을 인터프리터로 실행합니다. -- 뒤의 인수는
main에 전달됩니다. Web 애플리케이션과 HTTP 패키지에서 살펴볼 제품은 명령이
아니라 브라우저 앱이나 서비스입니다. 그래서 루프백 개발에는 topaz dev를
사용합니다.
배포 대상 하나 빌드하기
topaz build main.tpz --out-dir native-product
topaz build --target python --root my-app --locked --out-dir python-product
topaz build --root my-app --locked --release --out-dir product
build는 먼저 검사하고 그다음 요청한 관리형 제품을 씁니다. 네이티브, Web,
HTTP 빌드에는 해당 외부 Rust 대상이 필요합니다. Python은 제품을 실행할 때만
필요합니다. 정적 오류가 있으면 산출물을 만들기 전에 멈춥니다. 외부 도구 오류는
토파즈 단계 뒤에 추가로 보고되며 역시 0이 아닌 상태로 끝납니다.
출력 디렉터리에 다른 대상이나 잘못된 산출물 매니페스트, 변경된 관리 바이트가
있다면 토파즈는 소유권을 추측하지 않습니다. 나중에 살펴볼 수 있게 그 디렉터리는
그대로 두고 새 빈 --out-dir을 고르세요.
패키지와 기계 판독 경계
진입 파일을 생략하고 --root를 전달하면 topaz.toml의 진입점을 사용합니다.
--locked는 현재 매니페스트와 로컬 의존성 내용이 topaz.lock에 맞을 때만
통과합니다. 프로그램 인수는 항상 -- 뒤에 둡니다.
--unchecked는 컴파일러를 조사할 때 쓰는 우회 경로입니다. 일반 애플리케이션
명령이 아닙니다. 이 옵션은 정적 관문을 없앱니다. 실패한 검사형 빌드를 성공처럼
보이게 하려고 사용하면 안 됩니다.