/ .github / workflows / build.bash
build.bash
 1  #!/bin/sh
 2  
 3  set -e
 4  
 5  # Attempt to install `asciidoctor` on Debian, Arch Linux and MacOS.
 6  install() {
 7    os="$(uname)"
 8  
 9    case "$os" in
10      Linux)
11        if command -v apt-get >/dev/null 2>&1; then
12          # Debian
13          apt-get update
14          apt-get install -y asciidoctor
15        elif command -v pacman >/dev/null 2>&1; then
16          # Arch Linux
17          pacman -Sy --noconfirm asciidoctor
18        fi ;;
19      Darwin) # MacOS
20        if command -v brew >/dev/null 2>&1; then
21          brew install asciidoctor
22        fi ;;
23      *)
24        echo "fatal: unknown operating system: $os"
25        exit 1 ;;
26    esac
27  }
28  
29  main () {
30      if [ $# -ne 1 ]; then
31          echo "$#: Wrong number of arguments"
32          exit 1
33      fi
34  
35      if ! command -v asciidoctor >/dev/null 2>&1; then
36        install
37      fi
38  
39      target="$1"
40      rustup target add "$target"
41  
42      staging="radicle-$target"
43      mkdir -p "$staging"
44  
45      cargo build --target="$target" --package=radicle-httpd --release
46      cp target/"$target"/release/radicle-httpd "$staging"/
47  
48      cargo build --target="$target" --package=radicle-node --release
49      cp target/"$target"/release/radicle-node "$staging"/
50  
51      cargo build --target="$target" --bin rad --release
52      cp target/"$target"/release/rad "$staging"/
53  
54      cargo build --target="$target" --bin git-remote-rad --release
55      cp target/"$target"/release/git-remote-rad "$staging"/
56  
57      scripts/build-man-pages.sh "$staging" $(find . -name '*.1.adoc')
58  
59      tar czf "$staging.tar.gz" "$staging"
60      cp "$staging.tar.gz" "$staging"/
61  }
62  
63  main "$@"