# SPDX-FileCopyrightText: 2023 Gustavo Coutinho de Souza <dev@onemoresuza.mailer.me>
#
# SPDX-License-Identifier: ISC

DOCDIR := "doc"
PREFIX := "/usr/local"
PROFILE := "release"
MANIFEST_OPTS := "--profile=" + PROFILE + " --locked"
BUILD_OPTS := ""
INSTALL_OPTS := ""
ARCHIVE := ```
  printf 'aba-%s-%s-linux' \
    "$(
      cargo metadata --no-deps --format-version=1 \
      | jq -r '."packages"[0]."version"'
    )" \
    "$(uname -m)"
```

# Compile binary
build:
  cargo build {{BUILD_OPTS}} {{MANIFEST_OPTS}}

# Install compiled binary
install-bin: build
  cargo install {{INSTALL_OPTS}} {{MANIFEST_OPTS}} --root "{{PREFIX}}" --path .

# Generate man pages
doc:
  #!/bin/sh
  set -eu
  for f in "{{DOCDIR}}/"*.[[:digit:]].scd; do
    manpage="${f%.scd}"
    scdoc <"${f}" 1>"${manpage}"
    printf 'doc: Turn \033[1m%s\033[m into \033[1m%s\033[m\n' "${f}" "${manpage}"
  done

# Install documentation
install-doc: doc
  #!/bin/sh
  set -eu
  mandir="{{PREFIX}}/share/man"
  for f in "{{DOCDIR}}/"*.[[:digit:]]; do
    nmandir="${mandir}/man${f##*.}"
    mkdir -p "${nmandir}"
    cp "${f}" "${nmandir}"
    printf 'install-doc: Install \033[1m%s\033[m at \033[1m%s\033[m\n' \
      "${f}" "${nmandir}/${f##*/}"
  done

# Install the program
install: install-bin install-doc

# Distribute the binary and compiled manpages (to be used for staticly linked musl binaries)
dist-bin:
  mkdir -p "{{ARCHIVE}}"
  just PREFIX="{{ARCHIVE}}" INSTALL_OPTS="--no-track" install
  sha256sum "{{ARCHIVE}}/bin/aba" 1>"{{ARCHIVE}}.SHA256"
  tar cvf "{{ARCHIVE}}.tar" "{{ARCHIVE}}"
  gzip "{{ARCHIVE}}.tar"

# Clean the dist-bin generated files
clean-dist:
  rm -rf {{ARCHIVE}}*
