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