#!/bin/bash -eu
#% mksite -- driver for mkhtml, cpio, autoftp, and telnet
VERSION='$Revision: 1.12 $'; copyleft () { cat <"$HOME/$ARCHIVE"; }
find_newer() {
if [ -e "$FTP_LOG" ]; then
find_new $2 -newer "$FTP_LOG" | $1 2>&1| tee "$TMP_FILE"
else
find_new $2 | $1 2>&1| tee "$TMP_FILE"
fi
}
error () {
echo "$1" >&2;
[ -z "$TMP_FILE" ]||rm -f "$TMP_FILE"
exit 1;
}
sig () {
error "terminating on signal $1";
}
TMP_FILE=;
F_ARCH=;
F_TELN=;
LIST=;
O_MKHTML=;
F_FTP=;
OPT_SITE="aC:fH:L:tx";
trap 'sig ERR' ERR;
[ "$TMPDIR" ]||TMPDIR="/var/tmp";
if [ $# -eq 1 ]; then
case $1 in
--version) mksite_version; exit 0;;
--help) mksite_help; exit 0;;
*) ;;
esac
fi
[ -r "$CONFIG_FILE" ]&&source "$CONFIG_FILE"
while getopts :$OPT_SITE OPTION; do
case $OPTION in
a) F_ARCH=y;;
C) [ -r "$OPTARG" ]&&source "$OPTARG";;
f) F_FTP=y;;
L) LIST="$LIST $OPTARG";;
H) O_MKHTML="$OPTARG";;
t) F_TELN=y;;
x) set -x;;
:) error "option '-$OPTARG' missing an argument";;
\?) error "invalid option: -$OPTARG";;
*) error "internal error";;
esac
done
TMP_FILE="$TMPDIR/mksite.$$"
hash mkhtml autoftp cpio|| { echo "check PATH=$PATH">&2; exit 1;}
if [ "$O_MKHTML" ]; then
mkhtml $O_MKHTML;
fi
if [ "$F_ARCH" -o "$F_TELN" -o "$F_FTP" ];then
eval $CONNECT
fi
if [ "$F_FTP" -o "$F_ARCH" ];then
echo "press enter to ftp"
read junk;
cd "$PUBLIC_HTML"
rm -fv "`find . -name 'core*'`"
if [ "$F_ARCH" ];then
find_newer cpio_prog ""
cd;
ftp_arc "$ARCHIVE" | tee -a "$TMP_FILE";
cd -;
else
find_newer ftp_prog "-type f"
fi
echo "what to do with log (saving sets date time stamp)"
select ACT in save view quit save_and_quit; do
case $ACT in
save) cp -v "$TMP_FILE" "$FTP_LOG";;
view) less "$TMP_FILE";;
quit) break;;
save_and_quit)
cp -v "$TMP_FILE" "$FTP_LOG";
break;;
*) ;;
esac
done
fi
if [ "$F_TELN" ];then
eval $TELNET_CMD;
fi
if [ "$F_ARCH" -o "$F_TELN" -o "$F_FTP" ]&&[ "$DISCONNECT" ]; then
eval $DISCONNECT
fi
rm -f "$TMP_FILE";