From e548e543383bfb49933711f98f9045fb92d43226 Mon Sep 17 00:00:00 2001 From: "kebler.net" Date: Sun, 5 Sep 2021 08:24:53 -0700 Subject: [PATCH] fix: make rclone install script usable --- all/modules/install/rclone-install.func | 196 ++++-------------------- 1 file changed, 27 insertions(+), 169 deletions(-) diff --git a/all/modules/install/rclone-install.func b/all/modules/install/rclone-install.func index af1073b..1ba88d2 100644 --- a/all/modules/install/rclone-install.func +++ b/all/modules/install/rclone-install.func @@ -1,171 +1,29 @@ -#!/bin/bash - -rclone_install () { - -local INSTALL_DIR="/opt" -local BIN_DIR="/opt/bin" -local FORCE=false -local VERSION=current - -declare OPTION -declare OPTARG -declare OPTIND - -while getopts 'i:b:v:f' OPTION; do - case "$OPTION" in - i) - INSTALL_DIR=$OPTARG - ;; - b) - BIN_DIR=$OPTARG - ;; - - v) - echo "Installing Beta" - VERSION=$OPTARG - ;; - f) - echo "FORCING download/overwrite" - FORCE=true - ;; - esac -done - -shift $(( OPTIND - 1 )) - -# error codes -# 0 - exited without problems -# 1 - parameters not supported were used or some unexpected error occurred -# 2 - OS or Architecture not supported by this script -# 3 - installed version of rclone is up to date -# 4 - supported unzip tools are not available -# 5 - unable to install without sudo permission - -[[ ! -w "$INSTALL_DIR" ]] && echo $INSTALL is not writable by user $USER, can\'t install there && exit 5 -[[ ! -w "$BIN_DIR" ]] && echo $BIN_DIR is not writable by user $USER, won\'t be able to link binary there && exit 5 -INSTALL_DIR=$INSTALL_DIR/rclone -# if [[ $EUID != 0 ]]; then -# sudo "$0" "$@" -# exit $? -# fi - -#detect the platform -set +e - -OS="`uname`" -case $OS in - Linux) - OS='linux' - ;; - *) - echo 'Only Linux OS not supported by this script' - exit 2 - ;; -esac - -OS_type="`uname -m`" -case $OS_type in - x86_64|amd64) - OS_type='amd64' - ;; - i?86|x86) - OS_type='386' - ;; - arm*) - OS_type='arm' - ;; - aarch64) - OS_type='arm64' - ;; - *) - echo 'OS architecture not supported' - exit 2 - ;; -esac - -set -e - -#when adding a tool to the list make sure to also add its corresponding command further in the script - -# exit if no unzip tools available -[[ -z "unzip" ]] && printf "Please install unzip and try again.\n\n" && exit 4 - -# Make sure we don't create a root owned .config/rclone directory #2127 -# export XDG_CONFIG_HOME=config - -#check installed version of rclone to determine if update is necessary -# installed_version=`rclone --version 2>>errors | head -n 1` -# if [ -z "${install_beta}" ]; then -# current_version=`curl https://downloads.rclone.org/version.txt` -# else -# current_version=`curl https://beta.rclone.org/version.txt` -# fi -# -# if [ "$version" = "$current_version" ]; then -# printf "\nThe latest ${install_beta}version of rclone ${version} is already installed.\n\n" -# exit 3 -# fi - -echo Installing to $INSTALL_DIR -mkdir -p $INSTALL_DIR -cd $INSTALL_DIR - -# mv rclone.bin rclone.bin.prev - -#create tmp directory and move to it with macOS compatibility fallback -# mkdir $INSTALL_DIR/zip -# $(mktemp -d -f rclone-zip) -# cd $zip_dir - -# echo made temp -#download and unzip -if [[ $VERSION = "current" ]]; then - download_link="https://downloads.rclone.org/rclone-current-$OS-$OS_type.zip" - rclone_zip="rclone-current-$OS-$OS_type.zip" -else - download_link="https://beta.rclone.org/rclone-beta-latest-$OS-$OS_type.zip" - rclone_zip="rclone-beta-latest-$OS-$OS_type.zip" -fi - -echo downloading rclone binary archive $download_link -# curl -O $download_link -echo expanding archive -unzip -j -o -a $rclone_zip -mkdir -p $INSTALL_DIR/docs 2> /dev/null || true -rm $INSTALL_DIR/docs/*.* 2> /dev/null || true -echo moving documentation files to docs/ -mv *.1 *.txt README.* $INSTALL_DIR/docs/ 2> /dev/null || true -# rm *.zip -echo preparing customized rclone command -rm -rf rclone.bin -mv rclone rclone.bin -chown :sudo rclone.bin -chmod 775 rclone.bin -touch $INSTALL_DIR/rclone -touch $INSTALL_DIR/rclone.conf -mkdir $INSTALL_DIR/cache 2> /dev/null || true -echo '#!/bin/bash' > $INSTALL_DIR/rclone -CMD=$(echo $INSTALL_DIR/rclone.bin \ - --config=$INSTALL_DIR/rclone.conf \ - --cache-dir=$INSTALL_DIR/cache \ - '$@' \ +sudo rclone.bin + chmod 775 rclone.bin + touch $INSTALL_DIR/rclone + touch $INSTALL_DIR/rclone.conf + mkdir $INSTALL_DIR/cache 2> /dev/null || true + echo '#!/bin/bash' > $INSTALL_DIR/rclone + CMD=$(echo $INSTALL_DIR/rclone.bin \ + --config=$INSTALL_DIR/rclone.conf \ + --cache-dir=$INSTALL_DIR/cache \ + '$@' \ ) -echo "$CMD" >> $INSTALL_DIR/rclone -chown :sudo rclone -chmod 775 rclone -rm $BIN_DIR/rclone -ln -s $INSTALL_DIR/rclone $BIN_DIR/rclone -echo -e "rclone customized command can be launched from echo where: $(command -v rclone) \n $CMD" -cd .. - - - - -#update version variable post install -version=`rclone --version 2>>errors | head -n 1` - -printf "\n${version} has successfully installed." -printf '\nNow run "rclone config" for setup. Check https://rclone.org/docs/ for more details.\n\n' -exit 0 - + echo "$CMD" >> $INSTALL_DIR/rclone + chown :sudo rclone + chmod 775 rclone + rm $BIN_DIR/rclone + ln -s $INSTALL_DIR/rclone $BIN_DIR/rclone + echo -e "rclone customized command can be launched from $(command -v rclone) \n $CMD" + echo -e "uncustomized rclone can be run from $INSTALL_DIR/rclone.bin" + cd .. + + + #update version variable post install + version=`rclone --version 2>>errors | head -n 1` + + printf "\n${last_version} has successfully installed." + printf '\nNow run "rclone config" to set up remotes. Check https://rclone.org/docs/ for more details.\n\n' + return 0 + }