From 99ace5d5b81660af343d1b76a7e2f5c236635013 Mon Sep 17 00:00:00 2001 From: rhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58> Date: Fri, 5 Jan 2007 03:58:36 +0000 Subject: simplaret: added --install git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@80 04377dda-e619-0410-9926-eae83683ac58 --- doc/CHANGELOG | 1 + src/simplaret | 64 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 7ec3a65..d594bf7 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -20,6 +20,7 @@ simplepkg changelog the new one. - fixed --get-paches - added --upgrade option + - added --install 0.4.9: released 0.4.9pre6 as 0.4.9 diff --git a/src/simplaret b/src/simplaret index 1cef677..9a7a64c 100755 --- a/src/simplaret +++ b/src/simplaret @@ -92,7 +92,7 @@ function simplaret_check_index { function simplaret_download { - # downloads a file from a repo to a folder + # download a file from a repo to a folder # usage: simplaret <repository_url> <package> <destination-folder> protocol="`echo $1 | cut -d : -f 1`" @@ -379,6 +379,9 @@ function simplaret_purge { function simplaret_get { + # get a package + # usage: simplaret_get <package-name> [--silent] + # prevent user to stay in $storage cd @@ -395,7 +398,10 @@ function simplaret_get { if [ "`package_name $candidate`" == "`package_name $result`" ] && \ [ "`package_version $candidate`" == "`package_version $result`" ] && \ [ "`package_build $candidate`" == "`package_build $result`" ]; then - echo package $candidate already downloaded and stored at `dirname $file` + if [ "$2" != "--silent" ]; then + echo package $candidate already downloaded and stored at `dirname $file` + else echo $file + fi return 0 else rm $file @@ -422,12 +428,17 @@ function simplaret_get { simplaret_repository_url simplaret_download $repository_url $file $storage/$repository_name if [ ! -f "$storage/$repository_name/$candidate" ]; then - echo error downloading $candidate from $repos_type repository $repository_url, please check your settings + if [ "$2" != "--silent" ]; then + echo error downloading $candidate from $repos_type repository $repository_url, please check your settings + fi return 1 else - echo package $candidate stored at $storage/$repository_name - simplaret_checksum $storage/$repository_name/CHECKSUMS.md5 $storage/$repository_name/$candidate - return 0 + if [ "$2" != "--silent" ]; then + echo package $candidate stored at $storage/$repository_name + else echo $storage/$repository_name/$candidate + fi + simplaret_checksum $storage/$repository_name/CHECKSUMS.md5 $storage/$repository_name/$candidate --silent + return $? fi fi @@ -548,11 +559,13 @@ function simplaret_get_patches { function simplaret_checksum { - # simplaret_checksum <md5file> <file-name> + # simplaret_checksum <md5file> <file-name> [--silent] if [ ! -f "$1" ] || [ ! -f "$2" ]; then - echo checksum error: file not found - exit 1 + if [ "$3" != "--silent" ]; then + echo checksum error: file not found + fi + return 1 fi pack="`basename $2`" @@ -560,11 +573,37 @@ function simplaret_checksum { if [ -z "$checksum" ]; then echo file $2 not in checksum $1 - exit 1 + return 1 elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then - echo checksum mismatch for file `basename $file` + if [ "$3" != "--silent" ]; then + echo checksum mismatch for file `basename $file` + fi + return 1 else - echo checksum ok for file `basename $file` + if [ "$3" != "--silent" ]; then + echo checksum ok for file `basename $file` + fi + return 0 + fi + +} + +function simplaret_install { + + # download and install a package + # TODO: dependency checking + + local package root + + if [ ! -x "$ROOT" ]; then + root="ROOT=/$ROOT" + else root="" + fi + + package="`simplaret_get $1 --silent`" + + if [ "$?" == "0" ]; then + $root upgradepkg --install-new $package fi } @@ -626,6 +665,7 @@ case $1 in --get) simplaret_get $2 ;; --get-patches) simplaret_get_patches ;; --purge) shift ; simplaret_purge $* ;; + --install) simplaret_install $2 ;; --upgrade) simplaret_get_patches ; jail-upgrade ;; *) simplaret_usage ;; esac -- cgit v1.2.3