min_version = "2026.9.5" [tools] # Keep the Rust version aligned with rust-toolchain.toml. rust = { version = "1.97.1", profile = "minimal", components = "clippy,rustfmt", targets = "x86_64-unknown-linux-musl,aarch64-unknown-linux-musl" } # Static Linux builds: zig links musl so the binary needs no system libc. zig = "0.16.0" "github:rust-cross/cargo-zigbuild" = "0.23.4" dagger = "0.21.9" # Release notes from conventional commits; see cliff.toml. "aqua:orhun/git-cliff" = "2.14.2" # Signs release checksums (SHA256SUMS.minisig); Sideporch verifies them before updating itself. "aqua:jedisct1/minisign" = "0.12" # The website (website/): a static site generator and its search index. # Linux x64 uses Zola's static musl build: Vercel builds on Amazon Linux # 2023, whose glibc (2.34) is older than the gnu build needs (2.35). "github:getzola/zola" = { version = "0.23.6", platforms = { linux-x64 = { asset_pattern = "zola-v0.23.6-x86_64-unknown-linux-musl.tar.gz" } } } "github:CloudCannon/pagefind" = "1.5.2" [tasks.dev] description = "Run Sideporch locally with its data in ./data" run = "cargo run -- --data data" [tasks.fmt] description = "Format the code" run = "cargo fmt --all" [tasks.lint] description = "Check formatting and run Clippy" run = [ "cargo fmt --all -- --check", "cargo clippy --all-targets --locked -- -D warnings", ] [tasks.test] description = "Run unit and end-to-end tests" run = "cargo test --all-targets --locked" [tasks.check] description = "Run every check CI would run, on this machine" depends = ["lint", "test"] [tasks.clean] description = "Remove all local build output (target/ and dist/)" run = ["cargo clean", "rm -rf dist"] [tasks."clean-debug"] description = "Remove debug builds and test binaries; keep release builds" run = "cargo clean --profile dev" [tasks."clean-ci"] description = "Empty only Sideporch's Rust build cache in the local Dagger engine" run = 'dagger call clean --nonce "$(date +%s)"' [tasks.ci] description = "Run the Linux CI pipeline in containers through Dagger (needs a container engine)" run = "dagger call ci" [tasks.build] description = "Build the release binary for this machine into target/release/sideporch" run = "cargo build --release --locked" [tasks."build-static"] description = "Build fully static Linux binaries (x86-64 and ARM64) with zig and musl" run = [ "cargo zigbuild --release --locked --target x86_64-unknown-linux-musl", "cargo zigbuild --release --locked --target aarch64-unknown-linux-musl", ] [tasks.image] description = "Build the container image for this machine's architecture and load it into Docker" run = "dagger call image export --path target/sideporch-image.tar && docker load --input target/sideporch-image.tar" [tasks."release-notes"] description = "Print the release notes for the newest tag, or for unreleased commits: mise run release-notes [-- --unreleased]" run = "git-cliff --latest --strip header" [tasks.changelog] description = "Write the release notes of every version to CHANGELOG.md" run = "git-cliff --output CHANGELOG.md" [tasks.package] description = "Archive a built binary into dist/: mise run package -- VERSION TARGET [BINARY]" run = "sh scripts/package.sh" [tasks."nix-check"] description = "Build and test the package with Nix" run = "nix flake check --print-build-logs" [tasks.site] description = "Preview the website with live reload at http://127.0.0.1:1111" dir = "website" run = ["sh vendor.sh", "zola serve"] [tasks."site-build"] description = "Build the website into website/public, with its search index (SITE_URL=http://127.0.0.1:8765 to serve it elsewhere)" dir = "website" run = "sh build.sh" [tasks."site-check"] description = "Build the website and check every internal and external link" dir = "website" run = ["zola check", "mise run site-build"] [tasks.screenshots] description = "Retake every screenshot from a fresh demo server into website/static/img (needs node, cwebp and Chromium)" run = "sh scripts/screenshots.sh"