multistack 1.0.0

Open source lightweight TUI for parallel agent management
# Justfile
# https://github.com/casey/just

[private]
default:
    @just --list

# ---- Build ----

build:
    cargo build --release

run *args:
    cargo run -- {{ args }}

# ---- Quality ----

fmt:
    cargo fmt
    cargo clippy --all-targets -- -D warnings

check:
    cargo fmt --check
    cargo clippy --all-targets -- -D warnings

test: fmt
    cargo test

# ---- Tags ----

add-tag:
    #!/usr/bin/env bash
    set -euo pipefail
    git push origin main
    VERSION=$(grep '^version' Cargo.toml | head -1 | cut -d'"' -f2)
    git tag -a "v${VERSION}" -m "Release v${VERSION}"
    git push origin "v${VERSION}"
    echo "Created and pushed tag v${VERSION}"

# ---- Packaging: version sync ----

sync-version:
    bash scripts/sync-version.sh

# ---- Packaging: checksums ----

homebrew-checksums:
    #!/usr/bin/env bash
    set -euo pipefail
    VERSION=$(grep '^version' Cargo.toml | head -1 | cut -d'"' -f2)
    echo "Computing SHA256 sums for v${VERSION}..."

    SHA_DARWIN_X86=$(curl -sL "https://github.com/gi-dellav/multistack/releases/download/v${VERSION}/multistack-x86_64-apple-darwin.tar.gz" | sha256sum | cut -d' ' -f1)
    SHA_DARWIN_ARM=$(curl -sL "https://github.com/gi-dellav/multistack/releases/download/v${VERSION}/multistack-aarch64-apple-darwin.tar.gz" | sha256sum | cut -d' ' -f1)
    SHA_LINUX_X86=$(curl -sL "https://github.com/gi-dellav/multistack/releases/download/v${VERSION}/multistack-x86_64-unknown-linux-musl.tar.gz" | sha256sum | cut -d' ' -f1)
    SHA_LINUX_ARM=$(curl -sL "https://github.com/gi-dellav/multistack/releases/download/v${VERSION}/multistack-aarch64-unknown-linux-musl.tar.gz" | sha256sum | cut -d' ' -f1)

    sed -i "/multistack-x86_64-apple-darwin.tar.gz/{n;s/sha256 \".*\"/sha256 \"${SHA_DARWIN_X86}\"/}" packaging/homebrew/multistack.rb
    sed -i "/multistack-aarch64-apple-darwin.tar.gz/{n;s/sha256 \".*\"/sha256 \"${SHA_DARWIN_ARM}\"/}" packaging/homebrew/multistack.rb
    sed -i "/multistack-x86_64-unknown-linux-musl.tar.gz/{n;s/sha256 \".*\"/sha256 \"${SHA_LINUX_X86}\"/}" packaging/homebrew/multistack.rb
    sed -i "/multistack-aarch64-unknown-linux-musl.tar.gz/{n;s/sha256 \".*\"/sha256 \"${SHA_LINUX_ARM}\"/}" packaging/homebrew/multistack.rb

    echo "Updated SHA256 sums in packaging/homebrew/multistack.rb"

# ---- Packaging: release workflow ----

pre-release: sync-version
    @echo "=== pre-release done: version synced across all packaging files ==="
    @echo "Next: just add-tag, wait for GitHub release, then: just post-release"

post-release: homebrew-checksums
    @echo "=== post-release done: all checksums updated ==="
    @echo "Ready for:"
    @echo "  homebrew: push packaging/homebrew/multistack.rb to homebrew-tap repo"