A better Rust ATProto crate
at main 2.5 kB view raw
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