aba 0.8.0

An address book for aerc
# 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 := ""

# Compile binary
build *opts=(BUILD_OPTS):
    cargo build {{ opts }} {{ MANIFEST_OPTS }}

# Install compiled binary
install-bin *opts=(INSTALL_OPTS): build
    cargo 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 *bin-opts=(INSTALL_OPTS): (install-bin bin-opts) install-doc

# Generate, archive and compress artifacts (binary, manpages)
artifacts archive=("aba-"
    + `cargo metadata --no-deps --format-version=1 | jq -r '."packages"[0]."version"'`
    + "-"
    + arch()
    + "-unknown-" + os() + "-musl"
) +compressor=(`command -v gzip`): (install INSTALL_OPTS + " --no-track")
    mkdir {{ PREFIX }}/{{ archive }}
    mv {{ PREFIX }}/bin/aba {{ PREFIX }}/{{ archive }}
    rm -r {{ PREFIX }}/bin
    mv {{ PREFIX }}/share/man/man1/aba.1 {{ PREFIX }}/{{ archive }}
    mv {{ PREFIX }}/share/man/man5/aba.5 {{ PREFIX }}/{{ archive }}
    rm -r {{ PREFIX }}/share
    cd {{ PREFIX }}/{{ archive }} && sha256sum * 1>../artifacts.SHA256
    cd {{ PREFIX }} && tar cvf {{ archive }}.tar ./{{ archive }}
    rm -r {{ PREFIX }}/{{ archive }}
    cd {{ PREFIX }} && {{ compressor }} {{ archive }}.tar