--- toast-linux 2004/04/20 03:38:08 1.33 +++ toast-linux 2004/04/20 22:35:28 1.34 @@ -988,76 +988,80 @@ --- FILE root/sbin/task --- #!/bin/sh -cost="$1" +start="`date +'%s'`" + +if [ "$1" = "init" ]; then + [ -n "$TASK_INIT" ] && exit 0 + shift + TASK_INIT=1 exec "$@" +fi + +estimate="$1" name="$2" shift 2 -dir="/var/run/tasks" -tfile="$dir/total" -cfile="$dir/current" -lfile="$dir/list" -log="$dir/log" -ndir="$dir/names" -ddir="$dir/done" +dir="/var/run/task" +list="$dir/LIST" +file="$dir/$name" -total=0 -[ -r "$tfile" ] && read total < "$tfile" - if [ -n "$TASK_INIT" ]; then - nfile="$ndir/$name" - [ -r "$nfile" ] && exit 0 - mkdir -p "$dir" "$ndir" "$ddir" - : > "$nfile" - let total="$total+$cost" - echo "$total" > "$tfile" - echo "$name" >> "$lfile" - echo "0" > "$cfile" + [ -r "$file" ] && exit 0 + mkdir -p "$dir" + echo "$name $estimate" >> $list + : > "$file" exit 0 fi -dfile="$ddir/$name" -[ -r "$dfile" ] && exit 0 +[ -s "$file" ] && exit 0 out="" p() { out="$out$*"; } -firstline=3 -lastline=25 -p '\33[H' +firstline=4 +p '\33[s\33[H' line="" -while read i; do - line="$line $i" +etotal=0 +atotal=0 +esofar=0 +asofar=0 +while read n e; do + line="$line $n" if echo "$line" | egrep -q '.{79}'; then let firstline="1+$firstline" p '\33[K\12' - line=" $i" + line=" $n" fi p '\33[0;44m ' - [ "$name" = "$i" ] && p '\33[0;1m' - p "$i" + if [ "$name" = "$n" ]; then + p '\33[0;1m' + esofar="$etotal" + asofar="$atotal" + fi + let etotal="$etotal+$e" + [ -s "$dir/$n" ] && read a < "$dir/$n" && let atotal="$atotal+$a" + p "$n" p '\33[0;44m' -done < "$lfile" -p '\33[K\12\16\33[1;33;43m' -read current < "$cfile" -let bar="$current*80/$total" +done < "$list" +p '\33[K\12\33[m' +remain="???" +if [ "$esofar" -gt 0 && "$asofar" -gt 0 ]; then + let remain="($etotal-$esofar)*$asofar/$esofar" + p "$remain seconds" +let bar="$esofar*80/$etotal" +p '\33[K\16\33[1;33;43m' while [ "$bar" -gt 0 ]; do p '0' let bar="$bar-1" done -p '\17\33[K\33[m\33['"$firstline;$lastline"'r\33['"$lastline"'H' +p '\17\33[K\33[m\33['"$firstline"'r\33[u' echo -ne "$out" -start="`date +'%s'`" if ! "$@"; then echo -ne '\33[s\33[r\33[u' exit 1 fi let elapsed="`date +'%s'`-$start" -echo "$name $elapsed" >> $log +echo "$elapsed" > $file -: > "$dfile" -let current="$current+$cost" -echo "$current" > $cfile - --- FILE root/sbin/setup --- #!/bin/sh -e @@ -1717,7 +1721,7 @@ export http_proxy=http://cli-03:3128/ export ftp_proxy=http://cli-03:3128/ -[ -z "$TASK_INIT" ] && TASK_INIT=1 $0 +task init "$0" # preliminary figures: # network: 0 sec