check:
    ./gradlew :fmtCheck

format:
    ./gradlew :fmt

clean:
    ./gradlew clean

build-tools:
    ./gradlew :app:installDist :miner-tool:installDist :reflect-tool:installDist :twisto-tool:installDist :docs-tool:installDist

docs: build-tools
    build/projects/docs-tool/install/docs-tool/bin/docs-tool app/src/main/kotlin build/docs/api

home:
    @test -f site/index.html
    @echo "Homepage is site/index.html"

node data="build/runtime/node": build-tools
    build/projects/app/install/app/bin/app {{data}}

miner subject="twist-network" difficulty="3" attempts="1000000" threads="4": build-tools
    build/projects/miner-tool/install/miner-tool/bin/miner-tool mine {{subject}} {{difficulty}} {{attempts}} {{threads}}

staker data="build/runtime/stake" delegator="bootstrap" validator="bootstrap-validator" amount="1000000": build-tools
    build/projects/miner-tool/install/miner-tool/bin/miner-tool stake {{data}} {{delegator}} {{validator}} {{amount}}

indexer data="build/runtime/index" seed="bootstrap-validator": build-tools
    build/projects/reflect-tool/install/reflect-tool/bin/reflect-tool {{data}} {{seed}}

twisto data="build/runtime/twisto" owner="bootstrap" supply="1000000": build-tools
    build/projects/twisto-tool/install/twisto-tool/bin/twisto-tool {{data}} {{owner}} {{supply}}

up: build-tools
    #!/usr/bin/env bash
    set -euo pipefail
    build/projects/twisto-tool/install/twisto-tool/bin/twisto-tool build/runtime/twisto bootstrap 1000000
    build/projects/miner-tool/install/miner-tool/bin/miner-tool stake build/runtime/stake bootstrap bootstrap-validator 1000000
    build/projects/reflect-tool/install/reflect-tool/bin/reflect-tool build/runtime/index bootstrap-validator
    build/projects/miner-tool/install/miner-tool/bin/miner-tool mine twist-network 3 1000000 4 &
    miner_pid=$!
    trap 'kill "$miner_pid" 2>/dev/null || true' EXIT
    build/projects/app/install/app/bin/app build/runtime/node

build: build-tools
    ./gradlew build

publish version="0.1.0-SNAPSHOT":
    git add .
    git commit -m "Update version to ${version}"
    git push -f origin main