EXT := if os() == "windows" { ".exe" } else { "" } CWD := invocation_directory() BIN_NAME := "lune" # Default hidden recipe for listing other recipes + cwd [no-cd] [no-exit-message] [private] default: #!/usr/bin/env bash set -euo pipefail printf "Current directory:\n {{CWD}}\n" just --list # Builds the Lune CLI binary [no-exit-message] build *ARGS: #!/usr/bin/env bash set -euo pipefail cargo build --bin {{BIN_NAME}} {{ARGS}} # Run an individual file using the Lune CLI [no-exit-message] run FILE_PATH: #!/usr/bin/env bash set -euo pipefail cargo run --bin {{BIN_NAME}} -- run "{{FILE_PATH}}" # Run tests for the Lune library [no-exit-message] test *ARGS: #!/usr/bin/env bash set -euo pipefail cargo test --lib -- {{ARGS}} # Run tests for the Lune binary [no-exit-message] test-bin *ARGS: #!/usr/bin/env bash set -euo pipefail cargo test --bin {{BIN_NAME}} -- {{ARGS}} # Apply formatting for all Rust & Luau files [no-exit-message] fmt: #!/usr/bin/env bash set -euo pipefail stylua .lune scripts tests types \ --glob "tests/**/*.luau" \ --glob "!tests/roblox/rbx-test-files/**" cargo fmt # Check formatting for all Rust & Luau files [no-exit-message] fmt-check: #!/usr/bin/env bash set -euo pipefail stylua .lune scripts tests types \ --glob "tests/**/*.luau" \ --glob "!tests/roblox/rbx-test-files/**" cargo fmt --check # Analyze and lint Luau files using luau-lsp [no-exit-message] analyze: #!/usr/bin/env bash set -euo pipefail luau-lsp analyze \ --settings=".vscode/settings.json" \ --ignore="tests/roblox/rbx-test-files/**" \ .lune scripts tests types # Zips up the built binary into a single zip file [no-exit-message] zip-release TARGET_TRIPLE: #!/usr/bin/env bash set -euo pipefail rm -rf staging rm -rf release.zip mkdir -p staging cp "target/{{TARGET_TRIPLE}}/release/{{BIN_NAME}}{{EXT}}" staging/ cd staging if [ "{{os_family()}}" = "windows" ]; then 7z a ../release.zip * else chmod +x {{BIN_NAME}} zip ../release.zip * fi cd "{{CWD}}" rm -rf staging # Used in GitHub workflow to move per-matrix release zips [no-exit-message] [private] unpack-releases RELEASES_DIR: #!/usr/bin/env bash set -euo pipefail # if [ ! -d "{{RELEASES_DIR}}" ]; then echo "Releases directory is missing" exit 1 fi # cd "{{RELEASES_DIR}}" echo "" echo "Releases dir:" ls -lhrt echo "" echo "Searching for zipped releases..." # for DIR in * ; do if [ -d "$DIR" ]; then cd "$DIR" for FILE in * ; do if [ ! -d "$FILE" ]; then if [ "$FILE" = "release.zip" ]; then echo "Found zipped release '$DIR'" mv "$FILE" "../$DIR.zip" rm -rf "../$DIR/" fi fi done cd .. fi done # echo "" echo "Releases dir:" ls -lhrt