#!/bin/sh
######################################################################
#
# $Id: pad-make-script-guts,v 1.5 2006/05/25 22:17:28 mavrik Exp $
#
######################################################################
#
# Copyright 2002-2006 The WebJob Project, All Rights Reserved.
#
######################################################################
#
# PaD technology is part of The WebJob Project and is distributed
# under same terms and conditions as WebJob.
#
# WebJob is available at: http://webjob.sourceforge.net
#
######################################################################
IFS='
'
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
PROGRAM=`basename "$0"`
XER_OK=0
XER_Usage=1
XER_BootStrap=2
XER_ProcessArguments=3
XER_Delimiter=4
XER_WorkHorse=5
PaDBootStrap()
{
PAD_PAYLOAD=""
PAD_GUTS_DELIMITER=PAD_GUTS_DELIMITER
PAD_MAKE_DELIMITER=PAD_MAKE_DELIMITER
}
PaDLocateDelimiter()
{
DELIMITER=${1-PAD_GUTS_DELIMITER}
MAX_LINES=${2-200}
HEAD_COUNT=`head -${MAX_LINES} $0 | sed "/^${DELIMITER}$/q" | wc -l | awk '{print $1}'`
GREP_COUNT=`head -${MAX_LINES} $0 | grep "^${DELIMITER}$" | wc -l | awk '{print $1}'`
if [ ${GREP_COUNT} -lt 1 ] ; then
ERROR="PaDLocateDelimiter(): Error='Missing PaD delimiter.'"
return 1
fi
PAD_SKIP=`expr ${HEAD_COUNT} + 1`
}
PaDProcessArguments()
{
if [ $# -lt 1 ] ; then
PaDUsage
fi
case "$1" in
-c|--create)
if [ $# -ne 2 ] ; then
PaDUsage
fi
PAD_PAYLOAD=$2
if [ "${PAD_PAYLOAD}"X != "-"X ] ; then
if [ ! -f ${PAD_PAYLOAD} ] ; then
ERROR="PaDProcessArguments(): Payload='${PAD_PAYLOAD}' Error='File does not exist.'"
return 1
fi
if [ ! -r ${PAD_PAYLOAD} ] ; then
ERROR="PaDProcessArguments(): Payload='${PAD_PAYLOAD}' Error='File does not have read access.'"
return 1
fi
fi
;;
-e|--export)
if [ $# -ne 1 ] ; then
PaDUsage
fi
;;
*)
PaDUsage;
;;
esac
}
PaDUsage()
{
echo 1>&2
echo "Usage: ${PROGRAM} {-c|--create} {payload|-}" 1>&2
echo " ${PROGRAM} {-e|--export}" 1>&2
echo 1>&2
exit ${XER_Usage}
}
PaDWorkHorse()
{
SKIP=$1
DELIMITER=$2
PAYLOAD=$3
if [ -z "${PAYLOAD}" ] ; then
tail +${SKIP} $0
if [ $? -ne 0 ] ; then
ERROR="PaDWorkHorse(): Error='Failed to export PaD guts.'"
return 1
fi
else
tail +${SKIP} $0 && echo ${DELIMITER} && cat ${PAYLOAD}
if [ $? -ne 0 ] ; then
ERROR="PaDWorkHorse(): Error='Failed to create PaD file.'"
return 1
fi
fi
}
PaDMain()
{
PaDBootStrap
if [ $? -ne 0 ] ; then
echo "PaDMain(): ${ERROR-?}" 1>&2 ; return ${XER_BootStrap}
fi
PaDProcessArguments $*
if [ $? -ne 0 ] ; then
echo "PaDMain(): ${ERROR-?}" 1>&2 ; return ${XER_ProcessArguments}
fi
PaDLocateDelimiter "${PAD_MAKE_DELIMITER}"
if [ $? -ne 0 ] ; then
echo "PaDMain(): ${ERROR-?}" 1>&2 ; return ${XER_Delimiter}
fi
PaDWorkHorse "${PAD_SKIP}" "${PAD_GUTS_DELIMITER}" "${PAD_PAYLOAD}"
if [ $? -ne 0 ] ; then
echo "PaDMain(): ${ERROR-?}" 1>&2 ; return ${XER_WorkHorse}
fi
return ${XER_OK}
}
PaDMain $* ; exit $?
syntax highlighted by Code2HTML, v. 0.9.1