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