애플리케이션 만들기

애플리케이션 루프

학습 계획을 수정한 뒤 검사·테스트·실행하고 배포할 실행 파일을 다시 만드는 명령을 찾습니다.

첫 애플리케이션의 학습 계획을 수정할 때 이 명령 순서를 참고하세요. 소스를 검사하고 테스트한 뒤 배포할 실행 파일을 다시 만듭니다.

명령은 topaz.toml이 있는 폴더에서 실행하세요. 폴더 이름은 study-plan이며, 이름 변경 실습까지 마쳤다면 source-unavailable입니다. 소스 명령에는 topaz가, 네이티브 빌드에는 플랫폼용 Rust 툴체인이 필요합니다.

프로젝트 설정 확인하기

실습에서는 아래 topaz.toml과 src/main.tpz, src/plan.tpz, tests/plan.tpz를 만듭니다. 새 프로젝트를 시작한다면 전체 소스 코드를 따라 작성하세요.

TOML
[package]
name = "study-plan"
version = "0.1.0"
language = "5.20"
entry = "src/main.tpz"

[build]
target = "native"
deterministic = true

[dependencies]
std = "5.20"

entry는 실행을 시작할 소스 파일로 src/main.tpz를 지정합니다. target = "native"는 네이티브 실행 파일을 만들도록 지정합니다. 매니페스트를 만들거나 바꾼 뒤에는 잠금 파일을 갱신하세요.

BASH
topaz lock --root .

이 명령은 topaz.lock을 저장합니다. 매니페스트나 의존성을 바꾸지 않고 소스 코드만 수정했다면 기존 잠금 파일을 사용하세요.

수정한 코드 검사하고 테스트하기

BASH
topaz fmt --check --root .
topaz check --root . --locked
topaz test tests/plan.tpz --root . --locked

fmt --check는 파일을 고치지 않고 서식 차이를 알려줍니다. check는 진입 파일과 그 파일이 가져오는 모듈의 타입과 이름을 검사합니다. 두 명령 모두 검사를 통과하면 성공 종료합니다. 지정한 테스트는 다음 줄을 출력합니다.

출력
tests/plan.tpz: test-ok

명령이 실패하면 원인을 고친 뒤 계속하세요. 서식은 topaz fmt --root .으로 정리합니다. 타입이나 이름 오류는 진단이 가리키는 줄을 고치세요. 단언이 실패하면 tests/plan.tpz와 src/plan.tpz의 함수를 대조하세요. 잠금 파일이 오래되었다면 위의 잠금 명령을 다시 실행합니다.

애플리케이션 실행하기

BASH
topaz run --root . --locked

실습의 원래 입력값을 사용하면 다음 결과가 나옵니다.

출력
tasks=2, remaining=25 minutes

두 번째 과제를 30분으로 바꿨다면 remaining=30 minutes가 나옵니다. 테스트는 자체적으로 25분을 입력하므로 계속 통과합니다.

다시 빌드하고 배포하기

BASH
topaz build --release --root . --locked --out-dir ../study-plan-product

빌드 결과는 소스 폴더 옆의 다음 제품 폴더에 저장됩니다.

study-plan-product/
├── GENERATED-OUTPUT-NOTICE.txt
├── LICENSE
├── NOTICE
├── target
│   └── release
│       └── program[.exe]
└── topaz-artifact.json

제품 폴더 전체를 빌드 대상과 운영체제·아키텍처가 같은 배포 장비에 복사하세요. 그 폴더에서 Unix는 ./target/release/program을, PowerShell은 .\target\release\program.exe를 실행합니다. 원래 입력값이라면 위와 같이 tasks=2, remaining=25 minutes가 나옵니다. 완성된 실행 파일에는 토파즈나 Rust가 필요하지 않습니다.

애플리케이션에 [capabilities.fs]를 선언했다면 data/도 복사하고 쓰기 가능한 출력 폴더를 준비하세요. 제품 폴더를 작업 디렉터리로 사용합니다. 빌드는 애플리케이션 데이터를 자동으로 복사하지 않습니다.

Rust가 없으면 플랫폼에 맞는 툴체인을 설치하세요. 출력 폴더에 다른 타깃이나 수정한 생성 파일이 있으면 그 폴더를 보존하고 비어 있는 새 출력 폴더를 지정하세요.

관련 문서