From b75fc8a68a05b3537f65b654b36261979754b5bc Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Wed, 15 Jan 2025 19:01:58 +0700 Subject: [PATCH] added deps and fix delete and add and read query file --- src/pm | 55 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/src/pm b/src/pm index c8afe34..18c32da 100755 --- a/src/pm +++ b/src/pm @@ -139,13 +139,42 @@ unpack() { packagename=$(echo $1 | sed -e "/.gz/s///") packagename=${packagename#*pkg/} printf "$YELLOW**$GREEN Installing ${packagename%.pkg*}\n$RESET" - installed=$(/usr/bin/cat $packagesqueryfile | grep ${packagename%.pkg*}) - check $? "Read $packagesqueryfile" - if [[ "$installed" != "" ]]; then + if [ ! -f $packagesqueryfile ]; then + printf "$BBLUE**$BWHITE Can't find $packagesqueryfile [$BRED ERROR $BWHITE]\n$RESET" + fi + installed=false + for i in $(/usr/bin/cat $packagesqueryfile); do + if [ "$i" = "${packagename%.pkg*}" ]; then + export installed=true + break + fi + done + if [[ "$installed" == "true" ]]; then printf "$YELLOW**$RESET Package already installed:$YELLOW reinstalling\n$RESET" fi tar -xvf $1 -C $rootdir/tmp &> /dev/null cd $rootdir/tmp/$packagename + if [ -f deps ]; then + printf "$YELLOW**$GREEN Checking deps\n$RESET" + deps=$(/usr/bin/cat deps) + for dep in $deps; do + have=false + for pack in $(/usr/bin/cat $packagesqueryfile); do + if [ $pack = $dep ]; then + have=yes + break + fi + done + if [ "$have" = "false" ]; then + pkgnow=$packagename + add "" $dep + unpack $cachedpkgdir/$pkgnow.gz + return + fi + done + mkdir $installedpackagesdir/$packagename &> /dev/null + mv -v deps $installedpackagesdir/$packagename &> /dev/null + fi mkdir $installedpackagesdir/$packagename &> /dev/null mv -v list $installedpackagesdir/$packagename &> /dev/null cp -r ./* $rootdir/ @@ -156,7 +185,7 @@ unpack() { printf "$YELLOW**$GREEN post_install script ${packagename%.pkg*}\n$RESET" /usr/bin/sh -c $rootdir/tmp/$packagename/post_install &> /dev/null fi - if [[ "$(/usr/bin/cat $packagesqueryfile | grep ${packagename%.pkg*})" == "" ]]; then + if [[ "$installed" == "false" ]]; then echo ${packagename%.pkg*} >> $packagesqueryfile fi rm -rv $rootdir/tmp/$packagename &> /dev/null @@ -170,10 +199,8 @@ u() { #------------------ delete package function ----------------------------- del() { printf "$YELLOW**$GREEN deleting\n$RESET" - for i in $*; do - if [[ "$i" == "del" ]]; then - continue - fi + shift 1 + for i in $@; do printf "$YELLOW**$GREEN deleting $i\n$RESET" if [ ! -f $installedpackagesdir/$i.pkg/list ]; then printf "$BBLUE**$BWHITE package not installed ($i) [$BRED ERROR $BWHITE]\n$RESET" @@ -184,12 +211,20 @@ del() { done # rm -v $rootdir/$(/usr/bin/cat $installedpackagesdir/$i.pkg/list) rm -rv $installedpackagesdir/$i.pkg &> /dev/null - sed -i "/$i/d" $packagesqueryfile + packs=$(cat $packagesqueryfile) + rm $packagesqueryfile + for pack in $packs; do + if [ "$pack" = "$i" ]; then + continue + fi + echo $pack >> $packagesqueryfile + done + # sed -i "s/$i/d" $packagesqueryfile printf "$YELLOW**$GREEN delete $i successful\n$RESET" done } d() { - del $* + del $@ } #------------------------------------------------------------------------