github.com/tooploox/oya@v0.0.21-0.20230524103240-1cda1861aad6/docs/get (about) 1 #!/usr/bin/env bash 2 3 OYA_URL="https://github.com/tooploox/oya" 4 OYA_LATEST_RELEASE_URL="https://api.github.com/repos/tooploox/oya/releases/latest" 5 INSTALL_DIR="/usr/local/bin" 6 verifySHA=true 7 8 check_sops() { 9 printf " Sops -> " 10 if hash sops 2>/dev/null; then 11 printf "OK ($(sops --version))\n" 12 else 13 printf "FAIL\n" 14 echo "Oya requires SOPS (Secrets OPerationS) to manage secret files." 15 echo "Visit https://github.com/mozilla/sops for install instructions." 16 exit 1 17 fi 18 } 19 20 check_sha256sum() { 21 printf " Sha256sum -> " 22 if hash sha256sum 2>/dev/null; then 23 printf "OK\n" 24 else 25 printf "FAIL\n" 26 echo "WARN: Command sha256sum not found. Oya binaries checksum will not be verified!" 27 verifySHA=false 28 fi 29 } 30 31 check_deps() { 32 echo "Checking required tools:" 33 check_sops 34 check_sha256sum 35 } 36 37 get_os() { 38 unamestr=`uname` 39 if [[ "$unamestr" == 'Linux' ]]; then 40 os='linux' 41 return 0 42 elif [[ "$unamestr" == 'Darwin' ]]; then 43 os='darwin' 44 return 0 45 else 46 echo "Sorry Oya doesn't support ${unamestr} yet! :(" 47 exit 1 48 fi 49 } 50 51 get_arch() { 52 archstr=`uname -m` 53 if [[ "$archstr" == 'x86' ]]; then 54 arch='386' 55 elif [[ "$archstr" == 'x86_64' || "$archstr" == 'AMD64' ]]; then 56 arch='amd64' 57 elif [[ "$archstr" == 'arm64' ]]; then 58 arch='arm64' 59 else 60 echo "Sorry Oya doesn't support ${archstr} architecture yet! :(" 61 exit 1 62 fi 63 } 64 65 find_latest() { 66 version="$(fetch_latest_release_tag)" 67 if [[ -n ${version} ]];then 68 echo "${version}" 69 return 0 70 fi 71 } 72 73 fetch_latest_release_tag() { 74 curl -s ${OYA_LATEST_RELEASE_URL} | awk -v RS=',' -v FS='"' '$2=="tag_name"{print $4}' 75 } 76 77 install_version() { 78 _ver=$1 79 _os=$2 80 _arch=$3 81 _url="${OYA_URL}/releases/download/${_ver}/oya_${version}_${_os}_${_arch}.gz" 82 _sum_url="${OYA_URL}/releases/download/${_ver}/oya_${version}_SHA256SUMS" 83 echo "Installing Oya ${_ver}" 84 get_and_check "${_url}" "${_sum_url}" && return 85 } 86 87 get_and_check() { 88 _url=$1 89 _sum_url=$2 90 _tmp_dir=`mktemp -d` 91 _archive="oya.gz" 92 _fileName="oya" 93 _args="" 94 get_package "$_url" "$_tmp_dir" "$_archive" || return $? 95 verify_sha "$_sum_url" "$_tmp_dir" "$_archive" || return $? 96 gunzip ${_tmp_dir}/${_archive} || return $? 97 chmod +x ${_tmp_dir}/${_fileName} || return $? 98 if [ ! -w "$INSTALL_DIR" ]; then 99 _args="sudo " 100 fi 101 ${_args}mv ${_tmp_dir}/${_fileName} ${INSTALL_DIR} 102 } 103 104 get_package() { 105 _url=$1; _dir=$2; _file=$3 106 curl -sSL ${_url} > ${_dir}/${_file} || 107 { 108 echo "error downloading oya package $url" 109 return 1 110 } 111 } 112 113 verify_sha() { 114 if [[ "$verifySHA" == false ]]; then 115 return 116 fi 117 echo " Checking SHA checksum." 118 _url=$1; _dir=$2; _file=$3 119 curl -sSL ${_url} > ${_dir}/shasums || 120 { 121 echo "error downloading oya package SHA sums $url" 122 return 1 123 } 124 _mysum=$(sha256sum ${_dir}/${_file} | awk '{print $1}') 125 _result=$(cat ${_dir}/shasums | grep $_mysum) 126 if [ -z "$_result" ]; then 127 echo "downloaded archive checksum failed" 128 return 1 129 fi 130 } 131 132 oya_install() { 133 get_os 134 get_arch 135 check_deps 136 if [ -z "$1" ];then 137 version=$(find_latest) 138 else 139 version=$1 140 fi 141 install_version $version $os $arch 142 echo "Done." 143 } 144 145 oya_install "$@"