/ install.sh
install.sh
 1  #!/usr/bin/env bash
 2  set -o errexit -o nounset -o pipefail
 3  
 4  BIN_DIR="./bin"
 5  TEMP_DIR="$(mktemp -d)"
 6  OS="$(uname -s)-$(uname -m)"
 7  
 8  # cleanup on exit
 9  trap 'cleanup' EXIT INT TERM
10  
11  # check_program_in_path "program"
12  check_program_in_path() {
13    program="${1}"
14    if ! type -p "${program}" &>/dev/null; then
15        printf '%s\n' "error: ${program} is not installed."
16        printf '%s\n' "Use your package manager to install it."
17        exit 1
18    fi
19  }
20  
21  # check that everything installed
22  PATH="${PATH}:./bin"
23  for i in curl tar; do
24    check_program_in_path $i
25  done
26  
27  cleanup() {
28    rm -r ${TEMP_DIR}
29  }
30  
31  # metadata "file"
32  metadata() {
33    file="${1}"
34    echo "Downloading ${file}"
35    if [[ -f ${file} ]]; then
36      echo "${file} already exists"
37    else
38      curl --progress-bar -o "${file}" "https://fluence-dao.s3.eu-west-1.amazonaws.com/${file}"
39    fi
40  }
41  
42  # setup "name" "url"
43  setup() {
44    name="$1"
45    url="$2"
46    echo "Downloading ${name} from ${url}"
47    curl --progress-bar -L -S -o "${TEMP_DIR}/${name}.tar.gz" "${url}"
48    tar xf "${TEMP_DIR}/${name}.tar.gz" -C "${TEMP_DIR}"
49  
50    # move all executables to BIN_DIR
51    [[ ! -d "${BIN_DIR}" ]] && mkdir "${BIN_DIR}" -p
52    find "${TEMP_DIR}" -type f -exec file {} + | grep 'executable' | grep -v 'shell script' | cut -d: -f1 | xargs -I {} mv {} "${BIN_DIR}"
53    chmod +x "${BIN_DIR}"/*
54  }
55  
56  case "$OS" in
57      Linux-x86_64)
58          SHA3SUM_URL="https://gitlab.com/kurdy/sha3sum/uploads/95b6ec553428e3940b3841fc259d02d4/sha3sum-x86_64_Linux-1.1.0.tar.gz"
59          AGE_URL="https://github.com/FiloSottile/age/releases/download/v1.1.1/age-v1.1.1-linux-amd64.tar.gz"
60          ;;
61      Darwin-x86_64)
62          SHA3SUM_URL="https://gitlab.com/kurdy/sha3sum/uploads/47a60658d30743fba6ea6dd99c48da98/sha3sum-x86_64-AppleDarwin-1.1.0.tar.gz"
63          AGE_URL="https://github.com/FiloSottile/age/releases/download/v1.1.1/age-v1.1.1-darwin-amd64.tar.gz"
64          ;;
65      Darwin-arm64)
66          SHA3SUM_URL="https://gitlab.com/kurdy/sha3sum/uploads/47a60658d30743fba6ea6dd99c48da98/sha3sum-x86_64-AppleDarwin-1.1.0.tar.gz"
67          AGE_URL="https://github.com/FiloSottile/age/releases/download/v1.1.1/age-v1.1.1-darwin-arm64.tar.gz"
68          ;;
69      *)
70          echo "Error: Unsupported OS ${OS}"
71          exit 1
72          ;;
73  esac
74  
75  setup age "${AGE_URL}"
76  setup sha3sum "${SHA3SUM_URL}"
77  
78  metadata metadata.bin
79  metadata metadata.json