spk annotate spk @ rev 36

spk: small improvments
author Christophe Lincoln <pankso@slitaz.org>
date Tue May 15 21:57:13 2012 +0200 (2012-05-15)
parents ea3c01346d05
children a569934d1031
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@19 52 newline
pankso@19 53 boldify "Spk Info"
pankso@19 54 separator
pankso@19 55 gettext "Database :"; echo " $installed"
pankso@36 56 gettext "Cache info :"; echo " $cache"
pankso@19 57 gettext "Mirror URL :"; echo " $(cat $mirrorurl)"
pankso@19 58 count_installed
pankso@19 59 count_mirrored
pankso@19 60 separator
pankso@19 61 newline && exit 0 ;;
pankso@19 62 activity)
pankso@36 63 # --head=NB
pankso@36 64 : ${head=18}
pankso@19 65 newline
pankso@19 66 boldify "Spk Activity"
pankso@19 67 separator
pankso@36 68 cat $activity | head -n $head
pankso@19 69 separator && newline
pankso@19 70 exit 0 ;;
pankso@19 71 esac
pankso@19 72
pankso@19 73 #
pankso@19 74 # Handle packages: spk package1 ... packageN
pankso@19 75 #
pankso@19 76
pankso@19 77 [ "$debug" ] && echo "DEBUG: cmdline: $0 $@"
pankso@19 78 count=0
pankso@19 79
pankso@19 80 for pkg in $@
pankso@19 81 do
pankso@19 82 # Installed ?
pankso@19 83 if [ -d "$installed/$pkg" ]; then
pankso@20 84 # Handle: --options
pankso@20 85 case " $@ " in
pankso@20 86 *\ --block\ *)
pankso@20 87 check_root
pankso@20 88 [ -d "$installed/$pkg" ] || continue
pankso@20 89 if grep -qs ^${pkg}$ $blocked; then
pankso@20 90 echo -n "$(boldify "$pkg") "
pankso@20 91 gettext "is already blocked"; newline
pankso@20 92 else
pankso@20 93 gettext "Blocking package:"; echo -n " $pkg"
pankso@20 94 echo $pkg >> $blocked
pankso@20 95 log "Blocked package: $pkg" && status
pankso@20 96 fi
pankso@20 97 continue ;;
pankso@20 98 *\ --unblock\ *)
pankso@20 99 check_root
pankso@20 100 [ -d "$installed/$pkg" ] || continue
pankso@20 101 if grep -qs ^${pkg}$ $blocked; then
pankso@20 102 gettext "Unblocking package:"; echo -n " $pkg"
pankso@20 103 sed -i /"^${pkg}$"/d $blocked
pankso@20 104 log "Unblocked package: $pkg" && status
pankso@20 105 else
pankso@20 106 echo -n "$(boldify "$pkg") "
pankso@20 107 gettext "is not blocked"; newline
pankso@20 108 fi
pankso@20 109 continue ;;
pankso@20 110 *\ --rm\ *)
pankso@20 111 [ -d "$installed/$pkg" ] || continue
pankso@20 112 spk-rm $pkg --count=$count
pankso@20 113 count=$(($count + 1))
pankso@20 114 continue ;;
pankso@20 115 esac
pankso@20 116 count=$(($count + 1))
pankso@19 117 [ "$count" == 1 ] && newline
pankso@19 118 unset_receipt
pankso@19 119 . $installed/$pkg/receipt
pankso@19 120 boldify "$(gettext "Package") $pkg"
pankso@19 121 separator
pankso@22 122 gettext "Status :"; colorize " installed" 32
pankso@19 123 receipt_info
pankso@19 124 separator && newline
pankso@19 125 continue
pankso@19 126 fi
pankso@19 127 # Mirrored ?
pankso@19 128 mirrored=$(grep "^$pkg |" $pkgsdesc)
pankso@19 129 if [ "$mirrored" ]; then
pankso@20 130 # Handle: --options
pankso@20 131 case " $@ " in
pankso@20 132 *\ --add\ *)
pankso@20 133 echo "TODO: test 'spk-add $pkg'"
pankso@20 134 continue ;;
pankso@20 135 esac
pankso@21 136 count=$(($count + 1))
pankso@20 137 [ "$count" == 1 ] && newline
pankso@20 138 boldify "$(gettext "Package") $pkg"
pankso@20 139 separator
pankso@22 140 gettext "Status :"; colorize " not installed" 31
pankso@20 141 echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
pankso@20 142 "Version :" $2 "\n" \
pankso@20 143 "Short desc :" $3 "\n" \
pankso@20 144 "Category :" $4 }'
pankso@20 145 separator && newline
pankso@19 146 continue
pankso@19 147 fi
pankso@19 148 # Skip options such as --confirm or unknow package
pankso@19 149 case "$pkg" in
pankso@19 150 --*) continue ;;
pankso@20 151 *) gettext "WARNING: Unknow package"; echo ": $pkg"
pankso@19 152 esac
pankso@19 153 done
pankso@19 154 exit 0