diff --git a/.github/workflows/build-man-pages.sh b/.github/workflows/build-man-pages.sh deleted file mode 100755 index 0c73af29..00000000 --- a/.github/workflows/build-man-pages.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -e - -if [ $# -lt 2 ]; then - echo "usage: $0 ..." - exit 1 -fi - -outdir="$1" -shift - -for input in "$@"; do - echo "Building $input.." - asciidoctor --doctype manpage --backend manpage --destination-dir "$outdir" "$input" -done diff --git a/.github/workflows/build.bash b/.github/workflows/build.bash index be5a7ff2..6b2dd0ed 100755 --- a/.github/workflows/build.bash +++ b/.github/workflows/build.bash @@ -1,19 +1,45 @@ -#!/bin/bash +#!/bin/sh -set -o errexit -set -o nounset -set -o pipefail +set -e + +# Attempt to install `asciidoctor` on Debian, Arch Linux and MacOS. +install() { + os="$(uname)" + + case "$os" in + Linux) + if command -v apt-get >/dev/null 2>&1; then + # Debian + apt-get update + apt-get install -y asciidoctor + elif command -v pacman >/dev/null 2>&1; then + # Arch Linux + pacman -Sy --noconfirm asciidoctor + fi ;; + Darwin) # MacOS + if command -v brew >/dev/null 2>&1; then + brew install asciidoctor + fi ;; + *) + echo "fatal: unknown operating system: $os" + exit 1 ;; + esac +} main () { - if [[ $# -ne 1 ]]; then + if [ $# -ne 1 ]; then echo "$#: Wrong number of arguments" - return 1 + exit 1 fi - local target=$1 + if ! command -v asciidoctor >/dev/null 2>&1; then + install + fi + + target="$1" rustup target add "$target" - local staging="radicle-$target" + staging="radicle-$target" mkdir -p "$staging" cargo build --target="$target" --package=radicle-httpd --release @@ -28,7 +54,7 @@ main () { cargo build --target="$target" --bin git-remote-rad --release cp target/"$target"/release/git-remote-rad "$staging"/ - ./build-man-pages.sh "$staging" "$(find . -name '*.1.adoc')" + scripts/build-man-pages.sh "$staging" "$(find . -name '*.1.adoc')" tar czf "$staging.tar.gz" "$staging" cp "$staging.tar.gz" "$staging"/ diff --git a/scripts/build-man-pages.sh b/scripts/build-man-pages.sh new file mode 100755 index 00000000..606f79a1 --- /dev/null +++ b/scripts/build-man-pages.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +set -e + +main() { + if [ $# -lt 2 ]; then + echo "usage: $0 ..." + exit 1 + fi + + outdir="$1" + shift + + for input in "$@"; do + echo "Building $input.." + asciidoctor --doctype manpage --backend manpage --destination-dir "$outdir" "$input" + done +} + +main "$@"