/ 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