#!/bin/sh
######################################################################
#
# $Id: pad-make-script-guts,v 1.2 2004/03/13 17:26:28 mavrik Exp $
#
######################################################################
#
# Copyright 2002-2004 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 [ ! -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
    ;;
  -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 $?
