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 |