kaboodle 0.1.5

A low-configuration peer discovery mechanism for building peer-to-peer and mesh applications, based on the SWIM gossip protocol.
Documentation
# List available recipes
help:
    just -l

# Run a single copy of the app
@run:
    cargo run

# Run four copies of the app in a 2x2 grid
@run2x2:
    cargo build && zellij --layout 2x2-layout.kdl

# Run two copies of the app in a 2x1 grid
@run2x1:
    cargo build && zellij --layout 2x1-layout.kdl

# Build all targets in debug mode
@build:
    cargo build --release --all-targets

# Build all targets in release mode
@release:
    cargo build --release --all-targets

# Build documentation for all crates
@doc *FLAGS:
    cargo doc --release --no-deps --workspace {{FLAGS}}

# Run the same checks we run in CI
@ci: test
    cargo clippy
    cargo fmt --check
    cargo deny check licenses

# Get security advisories from cargo-deny
@security:
    cargo deny check advisories

# Run tests with nextest
@test:
    cargo nextest run --all-targets

# Lint and automatically fix what we can fix
@fix:
    cargo clippy --fix --allow-dirty --allow-staged
    cargo fmt

# Install required linting/testing tools via cargo.
@install-tools:
    cargo install cargo-nextest
    cargo install cargo-deny

# Check for unused dependencies.
check-unused:
    cargo +nightly udeps --all

set positional-arguments
tailscale *args:
    #!/usr/bin/env bash
    set -e
    if ! hash tailscale 2>/dev/null; then
        echo This command requires the Tailscale CLI tool to be installed:
        echo https://tailscale.com/kb/1080/cli/
        exit 1
    fi

    ADDR=$(tailscale ip --6 2>/dev/null)
    if [ "${ADDR}" == "" ]; then
        echo Tailscale does not have an IPv6 address; aborting.
        exit 1
    fi

    cargo run -- --interface "${ADDR}" "$@"