target_dir := "target" repo_name := file_name(justfile_directory()) project_name := repo_name # Build the default variant of this package, its doc and perform all available # checks default: build doc check # Build all variants of this package, its doc and perform all available checks all: build-all doc check # Clean all products of this justfile clean: clean-build #---------- # Building #---------- # Build all variants of this package. build-all: build-debug-features build-debug # Build the default variant of this package. build: build-debug # Clean any products of the 'build' task clean-build: cargo clean # Build the debug version of this package. build-debug: cargo build # Build a debug version of this package for the various possible active feature # possibilities build-debug-features: build-debug-features-none build-debug-features-with-server build-debug-features-with-client build-debug-features-with-server-with-reflection # Build a debug version of this package with all features disabled build-debug-features-none: cargo build --no-default-features # Build a debug version of this package with only the server feature active build-debug-features-with-server: cargo build --no-default-features --features server # Build a debug version of this package with only the client feature active build-debug-features-with-client: cargo build --no-default-features --features client # Build a debug version of this package with the server and reflection feature # active build-debug-features-with-server-with-reflection: cargo build --no-default-features --features 'server,reflection' # Build a debug version of this package with only the reflection feature active build-debug-features-with-reflection: cargo build --no-default-features --features reflection #---------- # Checks #---------- # Run all available checks check: check-static check-test # Run cargo test with all features enabled check-test: cargo test --all-features # Run cargo test check-test-quick: cargo test # Run all static checks (i.e.: all checks but without any tests). check-static: check-formatting check-clippy check-doc-readme # Check the formatting check-formatting: cargo fmt --all -- --check # Check clippy check-clippy: cargo clippy --all #------ # Docs #------ # Build this package's documentation doc: doc-package doc-readme # Clean any doc related build products clean-doc: clean-doc-package # Generates this package's full doc (including that of all its # dependencies) doc-package: cargo doc --all-features # Generates this package's full doc and launch a browser to it doc-package-preview: cargo doc --all-features --open # Generates only this package's doc (without any dependencies) doc-package-only: cargo doc --all-features --no-deps # Clean this package's doc clean-doc-package: cargo clean --doc #---------------------- # README.md generation #---------------------- # Generate README.md for a single crate doc-readme: _build-readme #!/usr/bin/env bash set -euo pipefail cp "{{target_dir}}/README.md" "README.md" # Check README.md for a single crate check-doc-readme: _build-readme #!/usr/bin/env bash set -euo pipefail diff -q "{{target_dir}}/README.md" "README.md" || ( \ echo -e "\033[1;31mError:\033[0m README.md for {{project_name}} needs to be regenerated."; \ echo -e " Run 'just doc-readme' to regenerate.\n"; \ exit 1 \ ) # Builds README.md for a single crate _build-readme: #!/usr/bin/env bash set -e -o pipefail mkdir -p {{target_dir}} echo "Building README.md for {{project_name}}" cargo readme > {{target_dir}}/README.md #---------- # Publish #---------- # Publish this package to crates.io publish: echo ${CARGO_REGISTRY_TOKEN} | cargo login cargo publish #--------------- # Misc actions #--------------- # Format the rust code base format: cargo fmt --all