jw-pkg/scripts/jw-build-functions.sh

122 lines
1.7 KiB
Bash
Raw Normal View History

2009-01-22 15:48:05 +00:00
export PATH=$PATH:/opt/ytools/bin
ytools_log()
{
echo $@
}
ytools_log_err()
{
echo $@ >&2
}
ytools_source_config()
{
local o_verbose=""
set -- `getopt 'v' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true;;
*)
ytools_log_err unknown option $1
exit 1;;
esac
shift
done
shift
[ ! -r "$1" ] && return
[ "$o_verbose" ] && ytools_log o reading config "<$1>"
. $1
}
ytools_source_configs()
{
local c
local basename=${myname/.*/}
local rc="$basename"rc
local project=ytools
local o_verbose=""
set -- `getopt 'v' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true;;
*)
ytools_log_err unknown option $1
exit 1;;
esac
shift
done
shift
config_files="
/etc/opt/$project/$basename.conf
$HOME/.$project/$basename.conf
$HOME/.$project/$rc
$HOME/.$basename/$basename.conf
$HOME/.$basename/$rc
$HOME/.$rc
"
for c in $config_files; do
ytools_source_config $c
if [ -d $c.d ]; then
local dirconfs=`find $c.d -maxdepth 1 -type f`
local f
for f in $dirconfs; do
ytools_source_config $f
done
fi
done
}
ytools_cat()
{
cat | sed 's/^[ ]*|//'
}
ytools_waitpid()
{
local pid=$1
local t=5
[ "$2" ] && t=$2
while ((t > 0)); do
[ -f /proc/$pid/status ] || {
wait $pid
return 0
}
sleep 1
((t -= 1))
done
return 1
}
ytools_terminate()
{
local pid
for pid in $@; do
[ -f /proc/$pid/status ] && {
echo terminating process $pid
kill $pid
ytools_waitpid $pid || {
echo "failed to normally terminate process $pid, killing it" >&2
kill -9 $pid
ytools_waitpid $pid || {
echo "failed to kill process $pid" >&2
return 1
}
}
}
done
return 0
}