summaryrefslogtreecommitdiff
path: root/pkgthing/src
diff options
context:
space:
mode:
Diffstat (limited to 'pkgthing/src')
-rw-r--r--pkgthing/src/libexec/find.sh75
-rw-r--r--pkgthing/src/libexec/search.sh36
-rw-r--r--pkgthing/src/pkgthing.mk.in59
-rw-r--r--pkgthing/src/pkgthing.sh15
4 files changed, 185 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
diff --git a/pkgthing/src/libexec/search.sh b/pkgthing/src/libexec/search.sh
new file mode 100644
index 0000000..7df0541
--- /dev/null
+++ b/pkgthing/src/libexec/search.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+#name=pkgthing package search
+#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>.
+
+pkg=$1
+src=${2-*}
+
+printname() {
+ name=$1
+ echo -n "$name"
+ if [ -L "${name%/}" ]; then
+ echo -n ' -> '
+ printname `readlink "${name%/}"`
+ else
+ echo '' # or, rather: putchar('\n');
+ fi
+}
+
+for i in $src/*/"$pkg/" $src/*/"$pkg.README"; do
+ if [ -e "$i" ]; then printname "$i"; fi
+done
diff --git a/pkgthing/src/pkgthing.mk.in b/pkgthing/src/pkgthing.mk.in
new file mode 100644
index 0000000..ae56543
--- /dev/null
+++ b/pkgthing/src/pkgthing.mk.in
@@ -0,0 +1,59 @@
+#!/usr/bin/make -f
+_pkg_name = pkgthing # name of the program, duh
+_pkg_ver = @ver@ # version number
+# 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>.
+
+#for use in messages
+_pkg_usage = Usage: make [-C /usr/src] TARGET
+_pkg_email = LukeShu@sbcglobal.net
+
+_pkg_libexecdir = @libexecdir@/$(_pkg_name) # the location of helper-scripts
+_pkg_update = update # the make target to update package lists
+
+.PHONY: shorthelp help version
+shorthelp:
+ # $(_pkg_name): please specify an action
+ # $(_pkg_usage)
+ #
+ # Try `make -C /usr/src help' for more options
+
+help:
+ # $(_pkg_name) $(_pkg_ver), package thing(y) - THing Is Not GNU (Yet?)
+ # $(_pkg_usage)
+ #
+ # ...
+ #
+ # Mail bug reports and suggestions to <$(_pkg_email)>
+
+version:
+ # $(_pkg_name) $(_pkg_ver)
+ #
+ # Copyright (C) 2009 Luke Shumaker, Inc.
+ # Licence GPLv2+: GNU GPL version 2 or later
+ # <http://www.gnu.org/licenses/gpl.html>.
+ # This is free software: you are free to change and redistribute it.
+ # There is NO WARRANTY, to the extent permitted by law.
+ #
+ # Originally written by Luke Shumaker <$(_pkg_email)>
+
+#.PHONY: $(_pkg_update) $(addprefix $(_pkg_update)-,$(shell echo *.lst))
+ $(_pkg_update): $(addprefix $(_pkg_update)-,$(shell echo *.lst))
+
+$(_pkg_update)-%: %
+ # loading `$<'...
+ bash $(_pkg_libexecdir)/init "$<"
+
diff --git a/pkgthing/src/pkgthing.sh b/pkgthing/src/pkgthing.sh
new file mode 100644
index 0000000..38c5ae5
--- /dev/null
+++ b/pkgthing/src/pkgthing.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+name='pkgthing'
+ver=@ver@
+export libexecdir=@libexecdir@
+
+srcdir=/usr/src
+
+case "$1" in
+ find) shift; bash $datadir/find $@;;
+ search) shift; bash $datadir/search $@;;
+
+ -v|-V|--version) make -C "$srcdir" version;;
+ -h|-H|--help) make -C "$srcdir" help;;
+ *) make -C "$srcdir" $1;;
+esac