PREFIX := env_var_or_default('PREFIX', '/usr/local')
DESTDIR := env_var_or_default('DESTDIR', '')
CARGO_TARGET_DIR := justfile_directory() / env('CARGO_TARGET_DIR', 'target')

default: build-release docs

build-debug *args:
    cargo build {{ args }}

build-release *args: (build-debug '--release' args)

docs:
    go-md2man -in docs/generate-kernel-cmdline.5.md -out docs/generate-kernel-cmdline.5

clean:
    cargo clean
    rm -f docs/generate-kernel-cmdline.5

install:
    install -Dm755 "{{ CARGO_TARGET_DIR }}/release/generate-kernel-cmdline" -t "{{DESTDIR}}/{{PREFIX}}/bin/"
    install -Dm755 docs/generate-kernel-cmdline.5 -t "{{DESTDIR}}/{{PREFIX}}/share/man/man5/"

uninstall:
    rm -f "{{DESTDIR}}/{{PREFIX}}/bin/generate-kernel-cmdline"
    rm -f "{{DESTDIR}}/{{PREFIX}}/share/man/man5/generate-kernel-cmdline.5"

test: build-release
    CMD="{{ CARGO_TARGET_DIR }}/release/generate-kernel-cmdline" .ci/lib/testlib.sh tests generate-kernel-cmdline

lint *args:
    cargo clippy --all-features {{args}} -- -W clippy::pedantic
