# TIP: run the command `just -l` to get an overview # Run an example host app [group("examples")] [arg("app", pattern="^(basic|components|custom_codec)$")] run app *args: cargo run -p {{app}}_example_app --features bevy/file_watcher {{args}} # Run the wasvy tui [group("examples")] cli *args: cargo run -p wasvy_cli -- {{args}} # Build an example guest rust mod to wasm and place it in the shared assets directory [group("examples")] [arg("mod", pattern="^(basic|components)$")] build-example-rust mod: cargo build --release --target wasm32-wasip2 -p {{mod}}_example_mod mkdir -p ./examples/assets/mods mv ./target/wasm32-wasip2/release/{{mod}}_example_mod.wasm ./examples/assets/mods/{{mod}}_example_mod.wasm # Build the Python example mod. [group("examples")] [working-directory("examples/mods/python/src")] build-example-python: poetry run componentize-py --wit-path ../wit/ --world example componentize app -o ../../../assets/mods/python.wasm # Generate bindings for the Python example mod. [group("examples")] [working-directory("examples/python_example")] generate-bindings-python: rm -rf ./src/componentize_py_async_support rm -rf ./src/wit_world rm -f ./src/componentize_py_runtime.pyi rm -f ./src/componentize_py_types.py rm -f ./src/poll_loop.py poetry run componentize-py --wit-path wit/ --world example bindings src # Build the Go example mod. [group("examples")] [working-directory("examples/mods/go/src")] [env("GOARCH", "wasm")] [env("GOOS", "wasip1")] build-example-go: go build -o core.wasm -buildmode=c-shared -ldflags=-checklinkname=0 wasm-tools component embed -w example ../wit/ core.wasm -o core-with-wit.wasm wasm-tools component new --adapt ../wasi_snapshot_preview1.reactor.wasm core-with-wit.wasm -o go.wasm # Generate bindings for the Go example mod. [group("examples")] [working-directory("examples/mods/go/src")] generate-bindings-go: wit-bindgen go -w example ../wit/ # Enable repository git hooks. [group("setup")] enable-git-hooks: git config core.hooksPath .githooks chmod +x .githooks/pre-push # Build the ECS WIT package. [group("chores")] build-wasvy-ecs: wkg wit build --wit-dir ./wit/ # Publish the ECS package to wa.dev. [group("chores")] publish-wasvy-ecs file_path version: wkg publish --package wasvy:ecs@{{version}} {{file_path}} --registry wa.dev # Replace the existing (1.95.0) rust toolchain version with a new one. [group("chores")] [arg("new", pattern="^\\d+\\.\\d+\\.\\d+$")] bump-toolchain new: rg -l -g '!.?*' -g '.githooks/**' -g '.github/**' 'rust' . | xargs sed -i "/rust/s/1.95.0/{{new}}/g" # Replace the existing (0.19.0) bevy version with a new one. [group("chores")] [arg("new", pattern="^\\d+\\.\\d+\\.\\d+$")] bump-bevy new: rg -l -g '!Cargo.lock' 'bevy' . | xargs sed -i "/bevy/s/0.19.0/{{new}}/g" cargo check # Replace the existing (0.0.9) wasvy version with a new one. [group("chores")] [arg("new", pattern="^\\d+\\.\\d+\\.\\d+$")] bump-version new: rg -l -g '!Cargo.lock' 'version' . | xargs sed -i "/version/s/0.0.9/{{new}}/g" cargo check # Publishes all crates [group("chores")] [confirm] publish: # CI cargo test --workspace --all-features cargo clippy --workspace --all-targets --all-features -- -D warnings cargo fmt --all -- --check RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --workspace --all-features # Publish cargo publish -p wasvy_macros cargo publish -p wasvy_cli cargo publish -p wasvy cargo publish -p wasvy_mock