#!/bin/bash defaultLocation="/usr/local/bin" defaultVersion="latest" location=${LAB_LOCATION:-$defaultLocation} version=${LAB_VERSION:-$defaultVersion} echo "Installing location $location" # Copyright MontFerret Team 2020 version=$(curl -sI https://github.com/MontFerret/ferret/releases/latest | grep location | awk -F"/" '{ printf "%s", $NF }' | tr -d '\r') if [ ! $version ]; then echo "Failed while attempting to install ferret-cli. Please manually install:" echo "" echo "1. Open your web browser and go to https://github.com/MontFerret/ferret/releases" echo "2. Download the latest release for your platform." echo "3. chmod +x ./ferret" echo "4. mv ./ferret $location" exit 1 fi hasCli() { has=$(which ferret) if [ "$?" = "0" ]; then echo echo "You already have the ferret!" export n=5 echo "Overwriting in $n seconds... Press Control+C to cancel." echo sleep $n fi hasCurl=$(which curl) if [ "$?" = "1" ]; then echo "You need curl to use this script." exit 1 fi hasTar=$(which tar) if [ "$?" = "1" ]; then echo "You need tar to use this script." exit 1 fi } checkHash(){ sha_cmd="sha256sum" if [ ! -x "$(command -v $sha_cmd)" ]; then sha_cmd="shasum -a 256" fi if [ -x "$(command -v $sha_cmd)" ]; then (cd $targetDir && curl -sSL $baseUrl/ferret_checksums.txt | $sha_cmd -c >/dev/null) if [ "$?" != "0" ]; then # rm $targetFile echo "Binary checksum didn't match. Exiting" exit 1 fi fi } getPackage() { uname=$(uname) userid=$(id -u) platform="" case $uname in "Darwin") platform="_darwin" ;; "Linux") platform="_linux" ;; esac uname=$(uname -m) arch="" case $uname in "x86_64") arch="_x86_64" ;; esac case $uname in "aarch64") arch="_arm64" ;; esac if [ "$arch" = "" ]; then echo "$arch is not supported. Exiting" exit 1 fi suffix=$platform$arch targetDir="/tmp/ferret$suffix" if [ "$userid" != "0" ]; then targetDir="$(pwd)/ferret$suffix" fi if [ ! -d $targetDir ]; then mkdir $targetDir fi targetFile="$targetDir/ferret" if [ -e $targetFile ]; then rm $targetFile fi echo if [ $location = $defaultLocation ]; then if [ "$userid" != "0" ]; then echo echo "=========================================================" echo "== As the script was run as a non-root user the ==" echo "== following commands may need to be run manually ==" echo "=========================================================" echo echo " sudo cp $targetFile $location/ferret" echo " rm -rf $targetDir" echo exit 1 fi fi if [ ! -d $location ]; then mkdir $location fi baseUrl=https://github.com/MontFerret/ferret/releases/download/$version url=$baseUrl/ferret$suffix.tar.gz echo "Downloading package $url as $targetFile" curl -sSL $url | tar xz -C $targetDir if [ "$?" != "0" ]; then echo "Failed to download file" exit 1 fi # checkHash chmod +x $targetFile echo "Download complete." echo echo "Attempting to move $targetFile to $location" mv $targetFile "$location/ferret" if [ "$?" = "0" ]; then echo "New version of ferret installed to $location" fi if [ -d $targetDir ]; then rm -rf $targetDir fi "$location/ferret" --version } hasCli getPackage