version := `git describe --tags --always --dirty 2>/dev/null || echo dev`
commit  := `git rev-parse --short HEAD 2>/dev/null || echo none`
ldflags := "-s -w -X main.version=" + version + " -X main.commit=" + commit

build:
    CGO_ENABLED=0 go build -ldflags "{{ldflags}}" -o twister ./main.go

# Run the API server. Usage: just run-api [mode], mode: local|remote (default local)
run-api mode="local":
    if [ "{{mode}}" = "local" ]; then \
        go run -ldflags "{{ldflags}}" ./main.go api --local; \
    elif [ "{{mode}}" = "remote" ]; then \
        go run -ldflags "{{ldflags}}" ./main.go api; \
    else \
        echo "invalid mode '{{mode}}' (expected local or remote)" >&2; \
        exit 1; \
    fi

# Run the indexer. Usage: just run-indexer [mode], mode: local|remote (default local)
run-indexer mode="local":
    if [ "{{mode}}" = "local" ]; then \
        go run -ldflags "{{ldflags}}" ./main.go indexer --local; \
    elif [ "{{mode}}" = "remote" ]; then \
        go run -ldflags "{{ldflags}}" ./main.go indexer; \
    else \
        echo "invalid mode '{{mode}}' (expected local or remote)" >&2; \
        exit 1; \
    fi

test:
    go test ./...

clean:
    rm -f twister
