diff options
Diffstat (limited to 'pkgthing/find')
-rw-r--r-- | pkgthing/find | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pkgthing/find b/pkgthing/find new file mode 100644 index 0000000..4b33612 --- /dev/null +++ b/pkgthing/find @@ -0,0 +1,58 @@ +#!/bin/bash + +# option handling +case "$1" in + -v|-q) volume=$1; prog=$2;; + *) prog="$1";; +esac + +# core +error() { + echo "$0:$@" + exit 1 +} + +checkList() { + prog=$1 + src=$2 + file=$3 + sed -n "s/^\($prog\) \.* \(.*\)/\1\t\2/p" "$src/$file" | \ + while read line; do + _prg=`echo "$line" | cut -f 1` + _pkg=`echo "$line" | cut -f 2` + echo "\`$_prg' is in the $src package \`$_pkg'" + if [ "$volume" == '-v' ]; then + pkgthing search "$_pkg" "$src" | sed 's/^\(.\)/ \1/g' + fi + done +} + +useVar() { + var=$1 + val=$2 + case "$var" in + \$name) _name="$val";; + \$union) :;; + \$progs) + checkList "$prog" "$_name" "$val" + :;; + esac +} + +# parse files +for lst in *.lst; do + _name='oops' + while read line; do + if [ -n "$line" ]; then + case "$line" in + \#*) :;; # comment, do nothing + \$*) # setting a variable + var=${line%%=*} + val=${line#$var=} + useVar "$var" "$val" + :;; + *) :;; # setting a source + esac + fi + done < "$lst" +done |