feat(workout): unify release command surface

Route local dev, tests, production build, mobile release, mobile verification, and doctor through one Workout xtask surface, and update the canonical docs around that surface.

req: examples/001

req: examples/006

req: test/004
This commit is contained in:
slhx agent
2026-06-12 11:20:22 +02:00
parent 5a42f2664a
commit 860a4edf61
6 changed files with 70 additions and 24 deletions
+6 -6
View File
@@ -10,7 +10,7 @@ req: examples/001 req: local/001 req: local/003 req: local/004
## Run
```sh
cargo run --bin hemx-workout-example
cargo run -p hemx-xtask -- workout dev
```
Open `http://127.0.0.1:3028`.
@@ -18,7 +18,7 @@ Open `http://127.0.0.1:3028`.
If the port is busy, pick another address:
```sh
HEMX_WORKOUT_ADDR=127.0.0.1:3030 cargo run --bin hemx-workout-example
HEMX_WORKOUT_ADDR=127.0.0.1:3030 cargo run -p hemx-xtask -- workout dev
```
The server prints the URL it bound. A bind failure means another process owns
@@ -27,7 +27,7 @@ the address; retry with `HEMX_WORKOUT_ADDR` instead of changing app code.
## Test
```sh
cargo test -p hemx-workout-example
cargo run -p hemx-xtask -- workout test
```
The E2E test starts the real HTTP binary, loads the page, checks the shared
@@ -48,7 +48,7 @@ The deployable artifact is the Rust server binary plus the generated hemx
resources embedded by the build script:
```sh
cargo build --release --bin hemx-workout-example
cargo run -p hemx-xtask -- workout build
HEMX_WORKOUT_ADDR=0.0.0.0:8080 ./target/release/hemx-workout-example
```
@@ -64,9 +64,9 @@ write Android/iOS shell metadata:
```sh
HEMX_WORKOUT_ORIGIN=https://workout.example.com \
cargo run -p hemx-xtask -- workout-mobile release
cargo run -p hemx-xtask -- workout mobile-release
HEMX_WORKOUT_ORIGIN=https://workout.example.com \
cargo run -p hemx-xtask -- workout-mobile verify
cargo run -p hemx-xtask -- workout mobile-verify
```
The kit lands in `target/hemx-mobile/workout` unless