1default:
2 @just --list
3
4# Run pre-commit hooks on all files, including autoformatting
5pre-commit-all:
6 pre-commit run --all-files
7
8# Check that jacquard-common compiles for wasm32
9check-wasm:
10 cargo build --target wasm32-unknown-unknown -p jacquard-common --features websocket
11
12# Run 'cargo run' on the project
13run *ARGS:
14 cargo run {{ARGS}}
15
16# Run 'bacon' to run the project (auto-recompiles)
17watch *ARGS:
18 bacon --job run -- -- {{ ARGS }}
19
20update-api:
21 cargo run -p jacquard-lexgen --bin lex-fetch -- -v
22
23generate-api:
24 cargo run -p jacquard-lexgen --bin jacquard-codegen -- -i crates/jacquard-api/lexicons -o crates/jacquard-api/src
25
26lex-gen *ARGS:
27 cargo run -p jacquard-lexgen --bin lex-fetch -- {{ARGS}}
28
29lex-fetch *ARGS:
30 cargo run -p jacquard-lexgen --bin lex-fetch -- --no-codegen {{ARGS}}
31
32codegen *ARGS:
33 cargo run -p jacquard-lexgen --bin jacquard-codegen -- {{ARGS}}
34
35# Package binaries for distribution (creates tar.xz archives)
36package-binaries:
37 ./scripts/package-binaries.sh
38
39# List all available examples
40examples:
41 #!/usr/bin/env bash
42 echo "jacquard examples:"
43 for file in "examples"/*.rs; do
44 name=$(basename "$file" .rs)
45 echo " - $name"
46 done
47 echo ""
48 echo "jacquard-axum examples:"
49 cargo metadata --format-version=1 --no-deps | \
50 jq -r '.packages[] | select(.name == "jacquard-axum") | .targets[] | select(.kind[] == "example") | .name' | \
51 sed 's/^/ - /'
52 echo ""
53 echo "Usage: just example <name> [ARGS...]"
54
55# Run an example by name (auto-detects package)
56example NAME *ARGS:
57 #!/usr/bin/env bash
58 if [ -f "examples/{{NAME}}.rs" ]; then
59 cargo run -p jacquard --features=api_bluesky,streaming --example {{NAME}} -- {{ARGS}}
60 elif cargo metadata --format-version=1 --no-deps | \
61 jq -e '.packages[] | select(.name == "jacquard-axum") | .targets[] | select(.kind[] == "example" and .name == "{{NAME}}")' > /dev/null; then
62 cargo run -p jacquard-axum --example {{NAME}} -- {{ARGS}}
63 else
64 echo "Example '{{NAME}}' not found."
65 echo ""
66 echo "jacquard examples:"
67 for file in "examples"/*.rs; do
68 name=$(basename "$file" .rs)
69 echo " - $name"
70 done
71 echo ""
72 echo "jacquard-axum examples:"
73 cargo metadata --format-version=1 --no-deps | \
74 jq -r '.packages[] | select(.name == "jacquard-axum") | .targets[] | select(.kind[] == "example") | .name' | \
75 sed 's/^/ - /'
76 exit 1
77 fi