spk annotate spk @ rev 60

Bunch of improvment, new extract_fileslist function in libspk.sh
author Christophe Lincoln <pankso@slitaz.org>
date Thu May 17 23:40:23 2012 +0200 (2012-05-17)
parents c14dd480d1d4
children 63fb720dc777
rev   line source
pankso@19 1 #!/bin/sh
pankso@19 2 #
pankso@19 3 # Spk - The SliTaz Packages toolset. Read the README before adding or
pankso@19 4 # modifing any code in spk!
pankso@19 5 #
pankso@19 6 # Copyright (C) SliTaz GNU/Linux - BSD License
pankso@19 7 # Author: See AUTHORS files
pankso@19 8 #
pankso@31 9 . /usr/lib/slitaz/libspk.sh
pankso@19 10
pankso@19 11 #
pankso@19 12 # Functions
pankso@19 13 #
pankso@19 14
pankso@19 15 # Help and usage
pankso@19 16 usage() {
pankso@19 17 name=$(basename $0)
pankso@19 18 cat << EOT
pankso@19 19
pankso@19 20 $(boldify $(gettext "Usage:")) $name [packages|--options]
pankso@19 21
pankso@19 22 $(gettext "SliTaz Packages toolset")
pankso@19 23
pankso@19 24 $(boldify $(gettext "Commands:"))
pankso@20 25 info $(gettext "Display path, mirror and other stats")
pankso@20 26 activity $(gettext "Display packages activities")
pankso@19 27
pankso@19 28 $(boldify $(gettext "Options:"))
pankso@20 29 --add $(gettext "Install packages if mirrored")
pankso@20 30 --rm $(gettext "Remove installed packages")
pankso@20 31 --block $(gettext "Add packages to the blocked list")
pankso@20 32 --unblock $(gettext "Remove packages from the blocked list")
pankso@36 33 --root= $(gettext "Set the root file system path")
pankso@19 34 --debug $(gettext "Display some usefull debug information")
pankso@19 35
pankso@19 36 $(boldify $(gettext "Examples:"))
pankso@19 37 $name package1 package2 packageN
pankso@20 38 $name package package2 --block
pankso@19 39
pankso@19 40 EOT
pankso@19 41 exit 0
pankso@19 42 }
pankso@19 43
pankso@19 44 #
pankso@19 45 # Commands and exit
pankso@19 46 #
pankso@19 47
pankso@19 48 case "$1" in
pankso@19 49 ""|*usage|*help) usage ;;
pankso@19 50 info)
pankso@36 51 cache="$(du -sh $CACHE_DIR | awk '{print $1 " " $2}')"
pankso@60 52 extra=$(ls $extradb | wc -l)
pankso@19 53 newline
pankso@59 54 boldify "Spk info"
pankso@19 55 separator
pankso@60 56 gettext "Architecture :"; echo " $SLITAZ_ARCH"
pankso@60 57 gettext "Database :"; echo " $installed"
pankso@60 58 gettext "Cache info :"; echo " $cache"
pankso@60 59 gettext "Mirror URL :"; echo " $(cat $mirrorurl)"
pankso@60 60 gettext "Extra mirrors :"; echo " $extra"
pankso@19 61 count_installed
pankso@19 62 count_mirrored
pankso@19 63 separator
pankso@19 64 newline && exit 0 ;;
pankso@19 65 activity)
pankso@58 66 # --lines=NB
pankso@58 67 : ${lines=18}
pankso@19 68 newline
pankso@19 69 boldify "Spk Activity"
pankso@19 70 separator
pankso@58 71 cat $activity | tail -n $lines
pankso@19 72 separator && newline
pankso@19 73 exit 0 ;;
pankso@19 74 esac
pankso@19 75
pankso@19 76 #
pankso@19 77 # Handle packages: spk package1 ... packageN
pankso@19 78 #
pankso@19 79
pankso@59 80 debug "cmdline: $@"
pankso@19 81 count=0
pankso@19 82
pankso@19 83 for pkg in $@
pankso@19 84 do
pankso@19 85 # Installed ?
pankso@19 86 if [ -d "$installed/$pkg" ]; then
pankso@20 87 # Handle: --options
pankso@20 88 case " $@ " in
pankso@20 89 *\ --block\ *)
pankso@20 90 check_root
pankso@20 91 [ -d "$installed/$pkg" ] || continue
pankso@20 92 if grep -qs ^${pkg}$ $blocked; then
pankso@20 93 echo -n "$(boldify "$pkg") "
pankso@20 94 gettext "is already blocked"; newline
pankso@20 95 else
pankso@20 96 gettext "Blocking package:"; echo -n " $pkg"
pankso@20 97 echo $pkg >> $blocked
pankso@20 98 log "Blocked package: $pkg" && status
pankso@20 99 fi
pankso@20 100 continue ;;
pankso@20 101 *\ --unblock\ *)
pankso@20 102 check_root
pankso@20 103 [ -d "$installed/$pkg" ] || continue
pankso@20 104 if grep -qs ^${pkg}$ $blocked; then
pankso@20 105 gettext "Unblocking package:"; echo -n " $pkg"
pankso@20 106 sed -i /"^${pkg}$"/d $blocked
pankso@20 107 log "Unblocked package: $pkg" && status
pankso@20 108 else
pankso@20 109 echo -n "$(boldify "$pkg") "
pankso@20 110 gettext "is not blocked"; newline
pankso@20 111 fi
pankso@20 112 continue ;;
pankso@20 113 *\ --rm\ *)
pankso@20 114 [ -d "$installed/$pkg" ] || continue
pankso@20 115 spk-rm $pkg --count=$count
pankso@20 116 count=$(($count + 1))
pankso@20 117 continue ;;
pankso@58 118 *\ --log\ *)
pankso@58 119 # Display packges log's
pankso@58 120 if [ -f "$logdir/$pkg/install.log" ]; then
pankso@58 121 count=$(($count + 1))
pankso@58 122 [ "$count" == "1" ] && newline
pankso@58 123 colorize "$(gettext "Install log for:"; echo " $pkg")" 36
pankso@58 124 separator
pankso@58 125 cat $logdir/$pkg/install.log
pankso@58 126 else
pankso@58 127 gettext "Any install log for:"; boldify " $pkg"
pankso@58 128 fi
pankso@58 129 if [ -f "$logdir/$pkg/up.log" ]; then
pankso@58 130 colorize "$(gettext "Upgrade log for:"; echo " $pkg")" 36
pankso@58 131 separator
pankso@58 132 cat $logdir/$pkg/up.log
pankso@58 133 else
pankso@58 134 gettext "Any upgrade log for:"; boldify " $pkg"
pankso@58 135 newline
pankso@58 136 fi
pankso@58 137
pankso@58 138 continue ;;
pankso@20 139 esac
pankso@20 140 count=$(($count + 1))
pankso@19 141 [ "$count" == 1 ] && newline
pankso@19 142 unset_receipt
pankso@19 143 . $installed/$pkg/receipt
pankso@19 144 boldify "$(gettext "Package") $pkg"
pankso@19 145 separator
pankso@22 146 gettext "Status :"; colorize " installed" 32
pankso@19 147 receipt_info
pankso@19 148 separator && newline
pankso@19 149 continue
pankso@19 150 fi
pankso@19 151 # Mirrored ?
pankso@19 152 mirrored=$(grep "^$pkg |" $pkgsdesc)
pankso@19 153 if [ "$mirrored" ]; then
pankso@20 154 # Handle: --options
pankso@20 155 case " $@ " in
pankso@20 156 *\ --add\ *)
pankso@58 157 spk-add $pkg --count=$count
pankso@58 158 count=$(($count + 1))
pankso@58 159 continue ;;
pankso@20 160 esac
pankso@21 161 count=$(($count + 1))
pankso@20 162 [ "$count" == 1 ] && newline
pankso@20 163 boldify "$(gettext "Package") $pkg"
pankso@20 164 separator
pankso@22 165 gettext "Status :"; colorize " not installed" 31
pankso@20 166 echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
pankso@20 167 "Version :" $2 "\n" \
pankso@20 168 "Short desc :" $3 "\n" \
pankso@20 169 "Category :" $4 }'
pankso@20 170 separator && newline
pankso@19 171 continue
pankso@19 172 fi
pankso@19 173 # Skip options such as --confirm or unknow package
pankso@19 174 case "$pkg" in
pankso@19 175 --*) continue ;;
pankso@20 176 *) gettext "WARNING: Unknow package"; echo ": $pkg"
pankso@19 177 esac
pankso@19 178 done
pankso@19 179 exit 0