From d43995befa0a3c9bbfb915c8d836bde7180b409f Mon Sep 17 00:00:00 2001 From: Liam Waldron Date: Fri, 20 Jan 2023 11:30:31 -0500 Subject: [PATCH] Glacier v 3.2.2 - New option: -li/local-install --- src/glacier | 66 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/src/glacier b/src/glacier index 760436b..f2d8556 100755 --- a/src/glacier +++ b/src/glacier @@ -20,11 +20,13 @@ source /etc/glacier/hooks get_pkg() { printf "$blue[ i ]$reset Downloading archive for package '$2'...\n" + # Extremely ugly but does what it needs to do $GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz if [ "$?" != "0" ]; then printf "$red[ $error ]$reset Package '$2' not found.\n" exit 1 fi + # same goes for this $GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz if [ "$?" != "0" ]; then printf "$red[ $error ]$reset Package checksum not found.\n" @@ -127,7 +129,7 @@ clear_cache() { # debug_info() { - printf "$blue>> Glacier v3.2.1$reset\n" + printf "$blue>> Glacier v3.2.2$reset\n" printf ">> Checking for valid download backend...\n" whereis wget whereis curl @@ -217,15 +219,24 @@ pre_op_hooks() { /etc/glacier/pre-hooks } -post_hooks () { +post_hooks() { printf "$blue[ i ]$reset Executing post-operation hooks...\n" /etc/glacier/post-hooks } +search_for_local_pkg() { + printf "$blue[ i ]$reset Searching working directory for package $2...\n" + find $2.tar.gz + if [ "$?" != 0 ]; then + printf "$red[ $error ]$reset Package $2 not found.\n" + exit 1 + fi +} + case $1 in -h|--help) printf "$blue[ * ] Glacier - Manage installed packages on the system$reset\n" - printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [--debuginfo]\n" + printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [-li] [--debuginfo]\n" printf "\n" printf "$blue=== Information ===$reset\n" printf "glacier {-h/--help} - Show this message and exit\n" @@ -239,6 +250,7 @@ case $1 in printf "glacier {-c/cache} - Download a package to the cache\n" printf "glacier {-ci/cache-install} - Install a package from the cache\n" printf "glacier {-cc/cache-clear} - Clear the cache\n" + printf "glacier {-li/local-install} - Install a package from a local directory\n" printf "\n" printf "$blue=== Debugging ===$reset\n" printf "glacier {--debuginfo} - Show debugging information\n" @@ -250,12 +262,12 @@ case $1 in exit 0 ;; -v|--version) - printf "${blue}Glacier v3.2.1${reset}\n" + printf "${blue}Glacier v3.2.2${reset}\n" exit 0 ;; -f|install) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -287,7 +299,7 @@ case $1 in ;; -u|update) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -319,7 +331,7 @@ case $1 in ;; -x|remove) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -356,7 +368,7 @@ case $1 in ;; -c|cache) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -382,7 +394,7 @@ case $1 in ;; -ci|cache-install) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -414,7 +426,7 @@ case $1 in ;; -cc|cache-clear) if [[ $(/usr/bin/id -u) -ne 0 ]]; then - printf "$red[ $error ]$reset Please run Glacier as root.\n" + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" exit 1 fi @@ -422,6 +434,40 @@ case $1 in printf "$green[ $check ]$reset Operation completed.\n" exit 0 ;; + -li|local-install) + if [[ $(/usr/bin/id -u) -ne 0 ]]; then + printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n" + exit 1 + fi + + if [ "$2" == "" ]; then + printf "$red[ $error ]$reset No package name was supplied.\n" + exit 1 + fi + + search_for_local_pkg "$@" + + printf "$blue[ i ]$reset Installing package '$2' from local file.\n" + read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r + if [[ $REPLY =~ ^[Yy]$ ]]; then + cp $2.tar.gz /opt/glacier/workspace + cd /opt/glacier/workspace + printf "\n" + pre_hooks "$@" + unpack_pkg "$@" + pre_op_hooks "$@" + installpkg "$@" + post_hooks "$@" + cleanup_keep_rm "$@" + printf "$green[ $check ]$reset Operation completed.\n" + exit 0 + elif [[ $REPLY =~ ^[Nn]$ ]]; then + printf "\n" + printf "$red[ $error ]$reset Aborting.\n" + exit 1 + fi + ;; + --debuginfo) debug_info "$@" exit 0