tazpkg annotate modules/help @ rev 828

Add modules "info", "list" with extended functions; update documentations and translations
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Aug 11 01:09:15 2015 +0300 (2015-08-11)
parents f7e9a5b8477b
children a02e36d44d06
rev   line source
al@822 1 #!/bin/sh
al@828 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
al@828 3 # help - TazPkg module
al@822 4 # TazPkg help system
al@822 5
al@828 6
al@822 7 . /lib/libtaz.sh
al@822 8
al@822 9 T="${1#-}"
al@822 10 DOC='/usr/share/doc/tazpkg/tazpkg.html'
al@822 11 QUERY="$T"
al@822 12
al@822 13 if [ -z "$T" ]; then
al@822 14 tazpkg usage; exit 0
al@822 15 fi
al@822 16
al@822 17 commands="\
al@822 18 :usage::help,h::activity,log,a::clean-cache,cc::shell::list,l::list-mirror,lm:\
al@822 19 :list-config::search,s::search-pkgname,sp::search-file,sf::get,g::install,i:\
al@822 20 :get-install,gi::install-list,get-install-list::remove,r::reconfigure::link:\
al@822 21 :set-release::add-flavor,install-flavor::info::desc,d::list-files,lf:\
al@822 22 :block,b,unblock,u,chblock::check::bugs::depends,rdepends::extract,e::pack:\
al@822 23 :repack::repack-config::recompress::convert,c::list-suggested::recharge:\
al@822 24 :upgrade,up::setup-mirror,sm::add-undigest,setup-undigest::list-undigest:\
al@822 25 :remove-undigest:"
al@822 26
al@822 27 if [ ! $(echo $commands | grep -e "[:,]$T[:,]") ]; then
al@822 28 try1=$(echo $commands | grep -oe ":[^:]*$T[^:]*:")
al@822 29 if [ -z "$try1" ]; then
al@822 30 _ 'Sorry, no help for "%s"' "$QUERY"; newline; exit 0
al@822 31 fi
al@822 32
al@822 33 try2=$(echo "$try1" | tr -d : )
al@822 34
al@822 35 trynum=$(echo "$try2" | wc -l)
al@822 36 if [ "$trynum" -ne 1 ]; then
al@822 37 _p '%d help topic available:' '%d help topics available:' "$trynum" \
al@822 38 "$trynum"; newline
al@822 39 echo "$try2" | sed 's|^| * &|; s| ,| |; s|,|, |g'
al@822 40 exit 0
al@822 41 else
al@822 42 T="${try2%%,*}"
al@822 43 fi
al@822 44 else
al@822 45 try3=$(echo $commands | grep -oe "[:,]$T[:,]")
al@822 46 case $try3 in
al@822 47 :*) try4="$try3";;
al@822 48 ,*) try4=$(echo $commands | grep -oe ":[^:]*$try3" | cut -d, -f1);;
al@822 49 esac
al@822 50
al@822 51 T=$(echo $try4 | tr -d ':,')
al@822 52 fi
al@822 53
al@822 54 title=$(echo $commands | grep -oe ":$T\(,[^:]*\)*:" | tr -d : | sed 's|,|, |g')
al@822 55
al@822 56
al@822 57 # style: <h3 id="TOPIC">
al@822 58 HLP=$(sed "/id=\"$T\"/,/<h3/!d; /<h3/d; /<\/h3/d; /<h2/,\$d" $DOC)
al@822 59 if [ -z "$HLP" ]; then
al@822 60 # style: <a name="TOPIC"></a>
al@822 61 HLP=$(sed "/name=\"$T\"/,/name=/!d; /name=/d; /<h3/d; /<h2/,\$d" $DOC)
al@822 62 fi
al@822 63
al@822 64 if [ -z "$HLP" ]; then
al@822 65 _ 'Sorry, no help for "%s"' "$QUERY"
al@822 66 exit 0
al@822 67 fi
al@822 68
al@822 69 PRE=$(echo "$HLP" | sed "/^$/d; /<pre>/,/<\/pre\>/{s|.*|  &|; s| |·|g}; \
al@822 70 s|^  </*pre>$||; s|<pre>||; s|</pre>||; s|  ·#|  #|;" | tr '\n' ' ' | \
al@822 71 sed '/^[ ]*$/d' | \
al@822 72 sed 's|[ ][ ]*| |g;' | \
al@822 73 sed 's|[ ]*<dl>|O\n|g; s|[ ]*</dl>|L\n|g; s|[ ]*</*dt>||g;' | \
al@822 74 sed 's|[ ]*<dd>| |g; s|</dd>|\n|g;' | \
al@822 75 sed 's|<h4>|<b>|g; s|</h4>|</b>\n|g' | \
al@822 76 sed 's|[ ]*<p>[ ]*||g; s|[ ]*</p>|\n \n|g; s|  |\n  |g' | \
al@822 77 sed 's|<a [^>]*>||g; s|</a>||g; s|·| |g' | \
al@822 78 sed 's|</*nobr>||g; s|&shy;||g; s|^[ ]*||' | \
al@822 79 sed '/^$/d' | \
al@822 80 sed 's|<tt>|A|g; s|<code>|A|g; s|<em>|B|g; s|<strong>|B|g; \
al@822 81 s|</tt>|D|g; s|</code>|D|g; s|</em>|D|g; s|</strong>|C|g; \
al@822 82 s|DD|D|g;')
al@822 83
al@822 84 OPT=$(echo "$PRE" | sed '/O/,/L/!d; /[OL]/d')
al@822 85 OPTLIST=$(optlist "$OPT")
al@822 86
al@822 87 OPT0=$(echo "$PRE" | tr '\n' '@')
al@822 88 OPTA=$(echo "$OPT" | tr '\n' '@')
al@822 89 OPTB=$(echo "$OPTLIST" | tr '\n' '@')
al@822 90
al@822 91 PRE2=$(echo "$OPT0" | sed "s|$OPTA|$OPTB|" | tr '@' '\n' | sed '/O/d; s|L||')
al@822 92
al@822 93 [ ! -z "$TA" ] && T="$T, $TA"
al@822 94
al@822 95 title '$title'
al@822 96 emsg "$(longline "$PRE2" | sed 's|A|<c 33>|g; s|B|<c 36>|g; s|C|<b>|g; s|D|</c>|g; ')"
al@822 97 newline