spk annotate spk @ rev 20

spk: add support for blocked pkgs: spk pkg1 ... pkgN --block
author Christophe Lincoln <pankso@slitaz.org>
date Tue May 15 14:52:29 2012 +0200 (2012-05-15)
parents b9ca2ddbafa1
children 320af418fedc
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@19 9 #. /usr/lib/slitaz/libspk.sh
pankso@19 10 . lib/libspk.sh
pankso@19 11
pankso@19 12 #
pankso@19 13 # Functions
pankso@19 14 #
pankso@19 15
pankso@19 16 # Help and usage
pankso@19 17 usage() {
pankso@19 18 name=$(basename $0)
pankso@19 19 cat << EOT
pankso@19 20
pankso@19 21 $(boldify $(gettext "Usage:")) $name [packages|--options]
pankso@19 22
pankso@19 23 $(gettext "SliTaz Packages toolset")
pankso@19 24
pankso@19 25 $(boldify $(gettext "Commands:"))
pankso@20 26 info $(gettext "Display path, mirror and other stats")
pankso@20 27 activity $(gettext "Display packages activities")
pankso@19 28
pankso@19 29 $(boldify $(gettext "Options:"))
pankso@20 30 --add $(gettext "Install packages if mirrored")
pankso@20 31 --rm $(gettext "Remove installed packages")
pankso@20 32 --block $(gettext "Add packages to the blocked list")
pankso@20 33 --unblock $(gettext "Remove packages from the blocked list")
pankso@19 34 --root $(gettext "Set the root file system path")
pankso@19 35 --debug $(gettext "Display some usefull debug information")
pankso@19 36
pankso@19 37 $(boldify $(gettext "Examples:"))
pankso@19 38 $name package1 package2 packageN
pankso@20 39 $name package package2 --block
pankso@19 40
pankso@19 41 EOT
pankso@19 42 exit 0
pankso@19 43 }
pankso@19 44
pankso@19 45 #
pankso@19 46 # Commands and exit
pankso@19 47 #
pankso@19 48
pankso@19 49 case "$1" in
pankso@19 50 ""|*usage|*help) usage ;;
pankso@19 51 info)
pankso@19 52 newline
pankso@19 53 boldify "Spk Info"
pankso@19 54 separator
pankso@19 55 gettext "Database :"; echo " $installed"
pankso@19 56 gettext "Mirror URL :"; echo " $(cat $mirrorurl)"
pankso@19 57 count_installed
pankso@19 58 count_mirrored
pankso@19 59 separator
pankso@19 60 newline && exit 0 ;;
pankso@19 61 activity)
pankso@19 62 newline
pankso@19 63 boldify "Spk Activity"
pankso@19 64 separator
pankso@19 65 cat $activity
pankso@19 66 separator && newline
pankso@19 67 exit 0 ;;
pankso@19 68 ls|add)
pankso@19 69 # Sort of helper on wrong commands or --option ? Or have better
pankso@19 70 # usage/help: spk help [command] ?
pankso@19 71 gettext "Did you mean ?"; echo " spk-$@"
pankso@19 72 exit 0 ;;
pankso@19 73 esac
pankso@19 74
pankso@19 75 #
pankso@19 76 # Handle packages: spk package1 ... packageN
pankso@19 77 #
pankso@19 78
pankso@19 79 [ "$debug" ] && echo "DEBUG: cmdline: $0 $@"
pankso@19 80 count=0
pankso@19 81
pankso@19 82 for pkg in $@
pankso@19 83 do
pankso@19 84 # Installed ?
pankso@19 85 if [ -d "$installed/$pkg" ]; then
pankso@20 86 # Handle: --options
pankso@20 87 case " $@ " in
pankso@20 88 *\ --block\ *)
pankso@20 89 check_root
pankso@20 90 [ -d "$installed/$pkg" ] || continue
pankso@20 91 if grep -qs ^${pkg}$ $blocked; then
pankso@20 92 echo -n "$(boldify "$pkg") "
pankso@20 93 gettext "is already blocked"; newline
pankso@20 94 else
pankso@20 95 gettext "Blocking package:"; echo -n " $pkg"
pankso@20 96 echo $pkg >> $blocked
pankso@20 97 log "Blocked package: $pkg" && status
pankso@20 98 fi
pankso@20 99 continue ;;
pankso@20 100 *\ --unblock\ *)
pankso@20 101 check_root
pankso@20 102 [ -d "$installed/$pkg" ] || continue
pankso@20 103 if grep -qs ^${pkg}$ $blocked; then
pankso@20 104 gettext "Unblocking package:"; echo -n " $pkg"
pankso@20 105 sed -i /"^${pkg}$"/d $blocked
pankso@20 106 log "Unblocked package: $pkg" && status
pankso@20 107 else
pankso@20 108 echo -n "$(boldify "$pkg") "
pankso@20 109 gettext "is not blocked"; newline
pankso@20 110 fi
pankso@20 111 continue ;;
pankso@20 112 *\ --rm\ *)
pankso@20 113 [ -d "$installed/$pkg" ] || continue
pankso@20 114 spk-rm $pkg --count=$count
pankso@20 115 count=$(($count + 1))
pankso@20 116 continue ;;
pankso@20 117 esac
pankso@20 118 count=$(($count + 1))
pankso@19 119 [ "$count" == 1 ] && newline
pankso@19 120 unset_receipt
pankso@19 121 . $installed/$pkg/receipt
pankso@19 122 boldify "$(gettext "Package") $pkg"
pankso@19 123 separator
pankso@19 124 gettext "Status : installed"; newline
pankso@19 125 receipt_info
pankso@19 126 separator && newline
pankso@19 127 continue
pankso@19 128 fi
pankso@19 129 # Mirrored ?
pankso@19 130 mirrored=$(grep "^$pkg |" $pkgsdesc)
pankso@19 131 if [ "$mirrored" ]; then
pankso@20 132 # Handle: --options
pankso@20 133 case " $@ " in
pankso@20 134 *\ --add\ *)
pankso@20 135 echo "TODO: test 'spk-add $pkg'"
pankso@20 136 continue ;;
pankso@20 137 esac
pankso@20 138 [ "$count" == 1 ] && newline
pankso@20 139 boldify "$(gettext "Package") $pkg"
pankso@20 140 separator
pankso@20 141 gettext "Status : not installed"; echo ""
pankso@20 142 echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
pankso@20 143 "Version :" $2 "\n" \
pankso@20 144 "Short desc :" $3 "\n" \
pankso@20 145 "Category :" $4 }'
pankso@20 146 separator && newline
pankso@19 147 continue
pankso@19 148 fi
pankso@19 149 # Skip options such as --confirm or unknow package
pankso@19 150 case "$pkg" in
pankso@19 151 --*) continue ;;
pankso@20 152 *) gettext "WARNING: Unknow package"; echo ": $pkg"
pankso@19 153 esac
pankso@19 154 done
pankso@19 155 exit 0