#!/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 $?