summaryrefslogtreecommitdiff
path: root/pkgthing/src/libexec/find.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgthing/src/libexec/find.sh')
-rw-r--r--pkgthing/src/libexec/find.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/pkgthing/src/libexec/find.sh b/pkgthing/src/libexec/find.sh
new file mode 100644
index 0000000..82d8f3a
--- /dev/null
+++ b/pkgthing/src/libexec/find.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#name=pkgthing program finder
+#version=???
+# Copyright (C) 2009 Luke Shumaker
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING.
+# If not, see <http://www.gnu.org/licenses>.
+
+# 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