tazpkg view lib/libtazpkgbox @ rev 367

typo
author Paul Issott <paul@slitaz.org>
date Tue Oct 19 21:08:42 2010 +0000 (2010-10-19)
parents dfb6fc121635
children 2275a8cb7a55
line source
1 #!/bin/sh
2 # The libtazpkgbox - Libraries used by tazpkg GUI box.
3 #
4 # These are functions to list installed packages in a suitable format for a
5 # GTK tree and list mirrored packages using the packages.desc file. The libs
6 # also provide functions to search packages and files, and the GUI box for
7 # package information.
8 #
9 # (C) 2010 SliTaz - GNU General Public License v3.
10 #
12 # Include gettext helper script.
13 . /usr/bin/gettext.sh
15 # Export package name for gettext.
16 TEXTDOMAIN='libtazpkgbox'
17 export TEXTDOMAIN
19 # Dont hardcore path, use $LIB
20 export LIB=/usr/lib/slitaz/libtazpkgbox
22 usage()
23 {
24 echo -e "\nTazpkgbox library\n
25 Usage : $0 [function] [pkg|args] [pkg]
26 Functions:
27 list-all List all packages.
28 list-undigest List undigest packages.
29 list-blocked List blocked packages.
30 list-upgradeable List all upgradable packages.
31 search-packages Search for packages.
32 search-files Search for files.
33 search-tags Search for TAGS.
34 package-infos Display box with pkg information."
35 }
37 # List functions.
38 undigest_list()
39 {
40 IFS="|"
41 if [ -n "$1" -a "$1" != "all" ]; then
42 cat undigest/$1/packages.desc
43 else
44 cat undigest/*/packages.desc
45 fi 2> /dev/null | sort | while read PACKAGE VERSION SHORT_DESC; do
46 ICON=tazpkg
47 PACKAGE=${PACKAGE%% *}
48 if [ -d installed/$PACKAGE ]; then
49 [ "$2" == "installable" ] && continue
50 ICON=tazpkg-installed
51 if grep -qs "^$PACKAGE$" blocked-packages.list; then
52 ICON=stop
53 fi
54 else
55 [ "$2" == "installed" ] && continue
56 fi
57 [ "$2" == "blocked" -a "$ICON" != "stop" ] && continue
58 [ "$2" == "upgradeable" ] &&
59 ! grep -q ^$PACKAGE$ upgradeable-packages.list && continue
60 echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC"
61 done
62 unset IFS
63 }
65 installable_list()
66 {
67 local cache
68 cache=packages.installable_list.$CAT
69 if [ -s $cache -a $cache -nt packages.desc -a $cache -nt installed ]; then
70 cat $cache
71 return
72 fi
73 IFS="|"
74 cat packages.desc undigest/*/packages.desc 2> /dev/null | sort | \
75 while read PACKAGE VERSION SHORT_DESC CATEGORY; do
76 # Check first for category for more speed.
77 CATEGORY=${CATEGORY%| *}
78 ICON=tazpkg
79 [ $CAT == all -o $CATEGORY == " $CAT " ] || continue
80 [ -d installed/${PACKAGE%% *} ] && continue
81 grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add
82 echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC"
83 done | tee $cache
84 unset IFS
85 }
87 installed_list()
88 {
89 for pkg in ${1}installed/*
90 do
91 [ -n "$1" -a -s installed/$(basename $pkg)/receipt ] && continue
92 . $pkg/receipt
93 ICON=tazpkg-installed
94 [ $CAT == all -o $CATEGORY == $CAT ] || continue
95 if [ -n "$1" -o -L $pkg ]; then
96 ICON=media-flash
97 else
98 grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add
99 fi
100 grep -qs "^$PACKAGE$" blocked-packages.list && ICON=stop
101 echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC"
102 done
103 }
105 all_list()
106 {
107 local cache
108 cache=packages.all_list.$CAT
109 if [ -s $cache -a $cache -nt packages.desc -a $cache -nt installed ]; then
110 cat $cache
111 return
112 fi
113 ( installable_list ; installed_list ) | sort -t \| -k 2 -u | tee $cache
114 }
116 blocked_list()
117 {
118 ICON=tazpkg-installed
119 [ "$1" = "blocked" ] && ICON=stop
120 for pkg in $(cat $1-packages.list 2> /dev/null); do
121 [ -f installed/$pkg/receipt ] || continue
122 . installed/$pkg/receipt
123 [ $CAT == all -o $CATEGORY == $CAT ] || continue
124 AVAILABLE=$(grep -s "^$pkg " packages.desc \
125 undigest/*/packages.desc | awk '{ print $3 }')
126 echo "$ICON|$PACKAGE|$VERSION (Available: $AVAILABLE)|$SHORT_DESC"
127 done
128 }
130 # Search functions
132 clean_search()
133 {
134 # Clean preview results.
135 rm -f /tmp/tazpkgbox/search
136 touch /tmp/tazpkgbox/search
137 }
139 list_files()
140 {
141 sed 's/.\[[01]m//g' | awk 'BEGIN { show=0 } {
142 if (/^===/) show=1-show;
143 else if (/^Package/) pkg=$2;
144 else if ($0 != "" && show != 0) printf("%s %s\n",pkg,$0);
145 }' | while read pkg file; do
146 [ "$pkg" = "0" ] && continue
147 version=$(grep -hs "^$pkg " /var/lib/tazpkg/packages.desc \
148 /var/lib/tazpkg/undigest/*/packages.desc | awk '{ print $3 }')
149 if [ -d /var/lib/tazpkg/installed/$pkg ]; then
150 if [ -x $file ]; then
151 echo "exec|$pkg|$version|$file"
152 elif [ -f $file ]; then
153 echo "txt|$pkg|$version|$file"
154 elif [ -d $file ] ; then
155 echo "folder|$pkg|$version|$file"
156 else
157 # Missing installed file.
158 echo "dialog-warning|$pkg|$version|$file"
159 fi
160 else
161 echo "tazpkg|$pkg|$version|$file"
162 fi
163 done
164 }
166 list_package()
167 {
168 if [ -d /var/lib/tazpkg/installed/$1 ]; then
169 . /var/lib/tazpkg/installed/$1/receipt
170 echo "tazpkg-installed|$PACKAGE|$VERSION|$SHORT_DESC"
171 else
172 echo "tazpkg|$PACKAGE|$VERSION|$SHORT_DESC"
173 fi
174 }
176 search_package()
177 {
178 IFS="|"
179 cat /var/lib/tazpkg/packages.desc \
180 /var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | sort | \
181 while read PACKAGE VERSION SHORT_DESC; do
182 if echo "$PACKAGE $SHORT_DESC" | grep -iq "$SEARCH"; then
183 list_package ${PACKAGE%% *}
184 fi
185 done
186 unset IFS
187 }
189 case "$1" in
190 list-all)
191 cd /var/lib/tazpkg
192 CAT=`cat /tmp/tazpkgbox/category`
193 STATUS=`cat /tmp/tazpkgbox/status`
194 case $STATUS in
195 blocked|upgradeable)
196 blocked_list $STATUS;;
197 linkable)
198 [ -d fslink ] && installed_list \
199 $(readlink fslink)/var/lib/tazpkg/;;
200 installed)
201 installed_list ;;
202 installable)
203 installable_list ;;
204 *)
205 all_list ;;
206 esac ;;
207 list-undigest)
208 cd /var/lib/tazpkg
209 CAT=`cat /tmp/tazpkgbox/category`
210 set -- `cat /tmp/tazpkgbox/undigest-category`
211 if [ "$1" == "all" -o "$1" == "" ]; then
212 undigest_list $2 $3
213 else
214 undigest_list $2 $3 | grep "$1"
215 fi ;;
216 list-blocked|list-upgradeable)
217 cd /var/lib/tazpkg
218 CAT=`cat /tmp/tazpkgbox/category`
219 blocked_list $1 ;;
220 search-files)
221 # Search for files
222 clean_search
223 tazpkg search-file "$SEARCH" --mirror | list_files > \
224 /tmp/tazpkgbox/search ;;
225 search-packages)
226 clean_search
227 ( search_package ;
228 for i in $(grep ^$SEARCH= /var/lib/tazpkg/packages.equiv | \
229 cut -d= -f2); do
230 SEARCH=${i#*:}
231 search_package
232 done ) > /tmp/tazpkgbox/search ;;
233 search-tags)
234 clean_search
235 grep -ls TAGS /home/slitaz/wok/*/receipt | while read file; do
236 TAGS=""
237 . $file
238 case "$TAGS" in
239 *$SEARCH*) list_package $PACKAGE ;;
240 esac
241 done > /tmp/tazpkgbox/search ;;
242 package-infos)
243 # Dialog box to provide package info and actions
244 XTERM_OPTS="-geometry 80x16+120+120"
245 PKG=`cat /tmp/tazpkgbox/pkg | sed s/" "/""/g`
246 ROOT=/var/lib/tazpkg
247 if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
248 ROOT=$(readlink /var/lib/tazpkg/fslink)$ROOT
249 fi
250 TMP_DIR=/tmp/tazpkg-$$-$RANDOM
251 if [ "$2" = "sizes" ]; then
252 cat <<EOT
253 Dependencies for $3:
254 $(tazpkg depends $3)
256 Reverse dependencies for $3:
257 $(tazpkg rdepends $3)
258 EOT
259 exit 0
260 fi
261 if [ "$2" = "info" ]; then
262 RECEIPT=$ROOT/installed/$4/receipt
263 . $RECEIPT
264 case "$3" in
265 Web*) browser $WEB_SITE &;;
266 Tip*) browser http://hg.slitaz.org/wok/raw-file/tip/$4/receipt &;;
267 Siz*) xterm -T "$4 `gettext \"depends (q to quit)\"`" -e "$0 sizes $4 | less";;
268 Upg*) xterm -T "$4 `gettext \"upgrade\"`" -e "tazpkg get-install $4 --forced ; sleep 2";;
269 Hand*) browser $HANDBOOK_URL &;;
270 Sug*) $0 package-infos list_packages $SUGGESTED;;
271 Dep*) $0 package-infos list_packages $DEPENDS;;
272 Mod*) $0 package-infos list_packages $(xargs echo < $ROOT/installed/$3/modifiers);;
273 Con*) tazpkgbox list_config $4;;
274 Ver*) xterm -T "$4 `gettext \"receipt (q to quit)\"`" -e "cat $RECEIPT | less";;
275 esac
276 exit 0
277 fi
279 if [ "$2" = "list_files" ]; then
280 CONF_FILES="$(tazpkg list-config $3 | awk "$AWK_FILTER")"
281 if [ -n "$CONF_FILES" ]; then
282 mkdir $TMP_DIR
283 zcat $ROOT/installed/$3/volatile.cpio.gz | \
284 ( cd $TMP_DIR ; cpio -id > /dev/null )
285 fi
286 cat $ROOT/installed/$3/files.list | grep ^/ | while read file; do
287 realfile="$file"
288 if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
289 realfile="$(readlink /var/lib/tazpkg/fslink)$file"
290 fi
291 echo -n "$(stat -c "%A|%U|%G|%s|$file|" "$realfile" || \
292 echo "File lost !||||$file|")"
293 if [ -L "$realfile" ]; then
294 echo -n "$(readlink "$realfile")"
295 elif [ -f "$file" ]; then
296 case "$CONF_FILES" in
297 *$file*)
298 if cmp $file $TMP_DIR$file > /dev/null 2>&1; then
299 echo -n "[configuration]"
300 else
301 echo -n "$(stat -c "[configuration: %.16y]" $file)"
302 fi;;
303 #* if [ "$(tazpkg check-file $file $2)" = "failure" ]; then
304 # echo -n "Invalid md5"
305 # fi;;
306 esac
307 fi
308 echo ""
309 done
310 [ -n "$CONF_FILES" ] && rm -rf $TMP_DIR
311 exit 0
312 fi
314 if [ "$2" = "list_files_mirror" ]; then
315 for i in /var/lib/tazpkg/files.list.lzma \
316 /var/lib/tazpkg/undigest/*/files.list.lzma ; do
317 [ -f $i ] || continue
318 unlzma -c $i
319 done | grep -- "^$3:" | awk '{ print substr($0,index($0,":")+2) }'
320 exit 0
321 fi
323 if [ "$2" = "list_packages" ]; then
324 PKG="$3"
325 if [ -n "$4" ]; then
326 shift
327 export LIST_PKGS='
328 <window title="Packages" icon-name="tazpkg">
329 <vbox>
330 <tree>
331 <width>600</width><height>160</height>
332 <label>Package|Version|Size|Description</label>
333 <variable>PKG</variable>
334 '
335 for i in "$@"; do
336 if [ -d $ROOT/installed/$i ]; then
337 . $ROOT/installed/$i/receipt
338 LIST_PKGS="$LIST_PKGS
339 <item icon=\"tazpkg\">$i|$VERSION|Installed|$SHORT_DESC</item>
340 "
341 else
342 RES=`grep -sh "^$i " \
343 /var/lib/tazpkg/packages.desc \
344 /var/lib/tazpkg/undigest/*/packages.desc`
345 PACKAGE=`echo "$RES" | cut -d "|" -f 1`
346 VERSION=`echo "$RES" | cut -d "|" -f 2`
347 SHORT_DESC=`echo "$RES" | cut -d "|" -f 3`
348 SIZE=`grep -sh -A 3 "^$(echo $PACKAGE)$" \
349 /var/lib/tazpkg/packages.txt \
350 /var/lib/tazpkg/undigest/*/packages.txt | \
351 tail -1 | sed 's/.*(\(.*\) .*/\1/'`
352 LIST_PKGS="$LIST_PKGS
353 <item icon=\"tazpkg\">$i|$VERSION|$SIZE|$SHORT_DESC</item>
354 "
355 fi
356 done
357 LIST_PKGS="$LIST_PKGS
358 <action>echo "\$PKG" > /tmp/tazpkgbox/pkg</action>
359 <action>$0 package-infos</action>
360 <action>refresh:PKG</action>
361 <action>refresh:PKG_STATS</action>
362 <action>refresh:CACHE_STATS</action>
363 </tree>
364 <hbox>
365 <button ok>
366 </button>
367 <button cancel>
368 <action type=\"closewindow\">LIST_PKGS</action>
369 </button>
370 </hbox>
371 </vbox>
372 </window>
373 "
374 eval `gtkdialog --center --program=LIST_PKGS`
375 [ "$EXIT" = "OK" ] || exit 0
376 fi
377 fi
379 export LIST_FILES="
380 <window title=\"`eval_gettext \"\\$PKG files\"`\" icon-name=\"system-file-manager\">
381 <vbox>
382 <tree exported_column=\"4\">
383 <variable>FILE</variable>
384 <width>600</width><height>160</height>
385 <label>Access | User | Group | Size | Name | Target</label>
386 <input> $0 package-infos list_files $PKG </input>
387 <action>tazpkg list-config $PKG | grep -q ^\$FILE$ && leafpad \$FILE</action>
388 </tree>
389 <hbox>
390 <button>
391 <input file icon=\"gtk-close\"></input>
392 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
393 </button>
394 </hbox>
395 </vbox>
396 </window>
397 "
399 export LIST_FILES_MIRROR="
400 <window title=\"$PKG files\" icon-name=\"system-file-manager\">
401 <vbox>
402 <tree>
403 <width>300</width><height>160</height>
404 <label>File Name</label>
405 <input> $0 package-infos list_files_mirror $PKG </input>
406 </tree>
407 <hbox>
408 <button>
409 <input file icon=\"gtk-close\"></input>
410 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
411 </button>
412 </hbox>
413 </vbox>
414 </window>
415 "
417 # Installed or not installed, that is the question!
418 if [ -d $ROOT/installed/$PKG ]; then
419 PACKED_SIZE=""
420 DEPENDS=""
421 MAINTAINER=""
422 BUGS=""
423 TAGS=""
424 . $ROOT/installed/$PKG/receipt
425 MAINTAINER=$(echo "$MAINTAINER" | sed 's/[<>|]/ /g')
426 upgrade_version="$(cat /var/lib/tazpkg/packages.desc \
427 /var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | \
428 awk "/^$PACKAGE / { print \$3 }" | head -1 )"
429 UPGRADE=""
430 if [ -n "$upgrade_version" ]; then
431 if [ "$upgrade_version" != "$VERSION" ]; then
432 UPGRADE="$upgrade_version"
433 else
434 cur_md5="$(awk "/ $PACKAGE-$VERSION/ { print \$1 }" \
435 $ROOT/installed.md5)"
436 new_md5="$(cat /var/lib/tazpkg/packages.md5 \
437 /var/lib/tazpkg/undigest/*/packages.md5 \
438 2> /dev/null | awk "/ $PACKAGE-$VERSION/ { print \$1 }")"
439 if [ -n "$cur_md5" -a -n "$new_md5" -a \
440 "$cur_md5" != "$new_md5" ]; then
441 UPGRADE="build"
442 fi
443 fi
444 fi
445 PACKAGE_INFOS="
446 <window title=\"Package: $PKG\" icon-name=\"package-x-generic\">
447 <vbox>
449 <tree>
450 <width>460</width><height>200</height>
451 <label>$PKG|$SHORT_DESC</label>
452 <variable>FIELD</variable>
453 <item icon=\"tazpkg\">Version: | $VERSION</item>
454 <item icon=\"tazpkg\">Category: | $CATEGORY</item>"
455 [ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
456 <item icon=\"tazpkg\">Upgrade: | $(echo $UPGRADE)</item>"
457 [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
458 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>"
459 [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS
460 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>"
461 [ -n "$PACKED_SIZE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
462 <item icon=\"tazpkg\">Size: | $PACKED_SIZE ($UNPACKED_SIZE installed)</item>"
463 [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS
464 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>"
465 [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
466 <item icon=\"important\">Bugs: | $BUGS</item>"
467 [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS
468 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>"
469 [ -n "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
470 <item icon=\"tazpkg\">Tags: | $TAGS</item>"
471 [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
472 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>"
473 [ -f $ROOT/installed/$PKG/modifiers ] &&
474 PACKAGE_INFOS="$PACKAGE_INFOS
475 <item icon=\"tazpkg\">Modified by: | $(xargs echo < $ROOT/installed/$PKG/modifiers)</item>"
476 PACKAGE_INFOS="$PACKAGE_INFOS
477 <item icon=\"applications-internet\">Website: | $WEB_SITE</item>
478 <item icon=\"help\">Tip: | double-click any item for more information</item>
479 <action> $0 package-infos info \"\$FIELD\" $PKG </action>
480 </tree>
482 <hbox>"
483 [ -s $ROOT/installed/$PACKAGE/description.txt ] &&
484 PACKAGE_INFOS="$PACKAGE_INFOS
485 <button>
486 <label>Description</label>
487 <input file icon=\"help\"></input>
488 <action>xterm -T \"$PKG description (q to quit)\" $XTERM_OPTS \
489 -e \"less $ROOT/installed/$PKG/description.txt\"</action>
490 </button>"
491 if [ ! -d /var/lib/tazpkg/fslink ]; then
492 [ ${PKG%%-*} = get -a ! -d $ROOT/installed/${PKG#get-} ] && PACKAGE_INFOS="$PACKAGE_INFOS
493 <button>
494 <label>Install</label>
495 <input file icon=\"go-next\"></input>
496 <action>xterm -T \"Install ${PKG#get-}\" $XTERM_OPTS -e \"\
497 $PKG; sleep 5\"</action>
498 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
499 </button>"
500 [ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
501 <button>
502 <label>Upgrade</label>
503 <input file icon=\"go-next\"></input>
504 <action>xterm -T \"Install $PKG\" $XTERM_OPTS -e \"\
505 tazpkg get-install $PKG --forced ; sleep 5\"</action>
506 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
507 </button>"
508 grep -q post_install $ROOT/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS
509 <button>
510 <label>Reconfigure</label>
511 <input file icon=\"reload\"></input>
512 <action>xterm -T \"Reconfigure $PACKAGE\" $XTERM_OPTS -e \"\
513 tazpkg reconfigure $PACKAGE; sleep 2\"</action>
514 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
515 </button>"
516 if grep -qs ^$PKG$ /var/lib/tazpkg/blocked-packages.list; then
517 PACKAGE_INFOS="$PACKAGE_INFOS
518 <button>
519 <label>Unblock</label>
520 <input file icon=\"up\"></input>
521 <action>xterm -T \"Unblock $PACKAGE\" $XTERM_OPTS -e \"\
522 tazpkg unblock $PACKAGE; sleep 2\"</action>
523 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
524 </button>"
525 else
526 PACKAGE_INFOS="$PACKAGE_INFOS
527 <button>
528 <label>Block</label>
529 <input file icon=\"down\"></input>
530 <action>xterm -T \"Block $PACKAGE\" $XTERM_OPTS -e \"\
531 tazpkg block $PACKAGE; sleep 2\"</action>
532 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
533 </button>"
534 fi
535 fi
536 if [ "$(cat /tmp/tazpkgbox/status)" = "linkable" ]; then
537 PACKAGE_INFOS="$PACKAGE_INFOS
538 <button>
539 <label>Link</label>
540 <input file icon=\"edit-redo\"></input>
541 <action>xterm -T \"Link $PACKAGE\" $XTERM_OPTS -e \"\
542 tazpkg link $PACKAGE $(readlink /var/lib/tazpkg/fslink); sleep 2\"</action>
543 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
544 </button>"
545 elif [ ! -s $ROOT/installed/$PKG/modifiers ]; then
546 [ -L $ROOT/installed/$PKG ] || PACKAGE_INFOS="$PACKAGE_INFOS
547 <button>
548 <label>Repack</label>
549 <input file icon=\"edit-redo\"></input>
550 <action>xterm -T \"Repack $PACKAGE\" $XTERM_OPTS -e \"\
551 cd /var/cache/tazpkg; \
552 tazpkg repack $PACKAGE; sleep 2\"</action>
553 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
554 </button>
555 "
556 PACKAGE_INFOS="$PACKAGE_INFOS
557 <button>
558 <label>Remove</label>
559 <input file icon=\"edit-delete\"></input>
560 <action>xterm -T \"Remove $PACKAGE\" $XTERM_OPTS -e \"\
561 tazpkg remove $PACKAGE; sleep 2\"</action>
562 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
563 </button>
564 "
565 else
566 PACKAGE_INFOS="$PACKAGE_INFOS
567 <button>
568 <label>Re-install</label>
569 <input file icon=\"edit-redo\"></input>
570 <action>xterm -T \"Re-install $PACKAGE\" $XTERM_OPTS -e \"\
571 tazpkg get-install $PACKAGE --forced; sleep 2\"</action>
572 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
573 </button>
574 <button>
575 <label>Remove</label>
576 <input file icon=\"edit-delete\"></input>
577 <action>xterm -T \"Remove $PACKAGE\" $XTERM_OPTS -e \"\
578 tazpkg remove $PACKAGE; sleep 2\"</action>
579 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
580 </button>
581 "
582 fi
583 PACKAGE_INFOS="$PACKAGE_INFOS
584 <button>
585 <label>View Files</label>
586 <input file icon=\"tazpkg\"></input>
587 <action type=\"launch\">LIST_FILES</action>
588 </button>
589 <button>
590 <input file icon=\"gtk-close\"></input>
591 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
592 </button>
593 </hbox>
595 </vbox>
596 </window>
597 "
598 export PACKAGE_INFOS
599 else
600 RES=`grep -sh "^$PKG " /var/lib/tazpkg/packages.desc \
601 /var/lib/tazpkg/undigest/*/packages.desc`
602 PACKAGE=`echo "$RES" | cut -d "|" -f 1`
603 VERSION=`echo "$RES" | cut -d "|" -f 2`
604 SHORT_DESC=`echo "$RES" | cut -d "|" -f 3`
605 CATEGORY=`echo "$RES" | cut -d "|" -f 4`
606 WEB_SITE=`echo "$RES" | cut -d "|" -f 5`
607 SIZES=`grep -sh -A 3 "^$(echo $PACKAGE)$" /var/lib/tazpkg/packages.txt \
608 /var/lib/tazpkg/undigest/*/packages.txt | tail -1`
609 DEPENDS=""
610 SUGGESTED=""
611 MAINTAINER=""
612 BUGS=""
613 HANDBOOK_URL=""
614 TAGS=""
615 CONFIG_FILES=""
616 height=160
617 if [ -s /home/slitaz/wok/$PKG/receipt ]; then
618 . /home/slitaz/wok/$PKG/receipt
619 height=200
620 fi
621 PACKAGE_INFOS="
622 <window title=\"Package: $PACKAGE\" icon-name=\"package-x-generic\">
623 <vbox>
625 <tree>
626 <width>460</width><height>$height</height>
627 <label>$PKG|$SHORT_DESC</label>
628 <variable>FIELD2</variable>
629 <item icon=\"tazpkg\">Version: | $VERSION</item>
630 <item icon=\"tazpkg\">Category: | $CATEGORY</item>"
631 [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
632 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>"
633 [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS
634 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>"
635 [ -n "$SIZES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
636 <item icon=\"tazpkg\">Size: | $SIZES</item>"
637 [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS
638 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>"
639 [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
640 <item icon=\"important\">Bugs: | $BUGS</item>"
641 [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS
642 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>"
643 [ -n "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
644 <item icon=\"tazpkg\">Tags: | $TAGS</item>"
645 [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
646 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>"
647 PACKAGE_INFOS="$PACKAGE_INFOS
648 <item icon=\"applications-internet\">Website: | $WEB_SITE</item>
649 <item icon=\"text-editor\">Receipt: | double-click to view receipt</item>
650 <action>case \$FIELD2 in Web*) browser $WEB_SITE &;; esac</action>
651 <action>case \$FIELD2 in Rec*) browser http://hg.slitaz.org/wok/raw-file/tip/$PACKAGE/receipt &;; esac</action>
653 </tree>
655 <hbox>"
656 [ ${PACKAGE%%-*} = get ] && PACKAGE_INFOS="$PACKAGE_INFOS
657 <checkbox>
658 <label>Auto exec</label>
659 <variable>AUTO_EXEC</variable>
660 <default>true</default>
661 </checkbox>"
662 PACKAGE_INFOS="$PACKAGE_INFOS
663 <checkbox>
664 <label>Auto install depends</label>
665 <variable>AUTO_DEPENDS</variable>
666 <default>true</default>
667 </checkbox>
668 <button>
669 <label>Install Package</label>
670 <input file icon=\"go-next\"></input>
671 <action>xterm -T \"Install $PACKAGE\" $XTERM_OPTS -e \"\
672 if [ x\$AUTO_DEPENDS != xtrue ]; then script -c \\\"tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log;\
673 else script -c \\\"yes y | tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log; fi; \
674 [ x\${AUTO_EXEC} = xtrue ] && $PACKAGE; \
675 sleep 2\"</action>
676 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
677 </button>
678 <button>
679 <label>Download</label>
680 <input file icon=\"go-next\"></input>
681 <action>xterm -T \"Get $PACKAGE\" $XTERM_OPTS -e \"\
682 cd /var/cache/tazpkg; tazpkg get $PACKAGE; sleep 2\"</action>
683 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
684 </button>
685 <button>
686 <label>View Files</label>
687 <input file icon=\"tazpkg\"></input>
688 <action type=\"launch\">LIST_FILES_MIRROR</action>
689 </button>
690 <button>
691 <input file icon=\"gtk-close\"></input>
692 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
693 </button>
694 </hbox>
696 </vbox>
697 </window>
698 "
699 export PACKAGE_INFOS
700 fi
701 gtkdialog --center --program=PACKAGE_INFOS ;;
703 *)
704 usage ;;
705 esac
707 exit 0