diff options
Diffstat (limited to 'pkgthing/src')
-rw-r--r-- | pkgthing/src/libexec/find.sh | 75 | ||||
-rw-r--r-- | pkgthing/src/libexec/search.sh | 36 | ||||
-rw-r--r-- | pkgthing/src/pkgthing.mk.in | 59 | ||||
-rw-r--r-- | pkgthing/src/pkgthing.sh | 15 |
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 |