#!/bin/sh

############################################
# install script for metaf2xml
############################################

# default install top directory
: ${METAF2XML:=/opt/metaf2xml}

# temporary directory
TMP=/tmp

############################################
# for parser, cgi:
############################################
# directory for parser perl script
: ${METAF2XML_BIN:=$METAF2XML/bin}

# directory for parser perl modules
: ${METAF2XML_LIB:=$METAF2XML/lib}

# directory for manuals
: ${METAF2XML_MAN:=$METAF2XML/man}

############################################
# for xsl, cgi:
############################################
# directory for metaf*.xsl files
: ${METAF2XML_XSL:=$METAF2XML/share}

############################################
# for cgi:
############################################
# directory for the CGI script
: ${CGI_BIN_DIR:=/usr/local/httpd/cgi-bin}
: ${HTDOCS_DIR:=/usr/local/httpd/htdocs}

# directory for METAR/TAF raw file data
: ${CGI_DATA_DIR:=$TMP}

# path for log file
: ${CGI_LOG_FILE:=$TMP/metaf2xml.log}

# directory for temporary data
: ${CGI_TMP_DIR:=$TMP}

# path and options for curl
: ${CURL:="curl -sSf --stderr -"}

# options for curl if a HTTP proxy should be used
: ${CURL_PROXY_OPTS:=}

# files for xsl
METAF2XML_XSL_FILES="\
    metaf-fullhtml.xsl \
    metaf-sum-ui.xsl \
    metaf-html.xsl \
    metaf-text.xsl \
    metaf-sum-html.xsl \
    metaf-sum-text.xsl \
    metaf-lang.xsl \
    metaf-sum.xsl \
    metaf-ui.xsl \
    metaf.xsl"

############################################
# targets
############################################
installed=

if [ "$1" = all -o "$1" = parser ]; then
    installed=$1

    mkdir -p ${METAF2XML_BIN} ${METAF2XML_LIB}/metaf2xml ${METAF2XML_MAN}/man{1,3}
    sed 's@^\(use lib .\).*\(.; # METAF2XML_LIB\)$@\1'${METAF2XML_LIB}'\2@' \
            metaf2xml.pl > ${METAF2XML_BIN}/metaf2xml.pl
    chmod a+x ${METAF2XML_BIN}/metaf2xml.pl
    for f in XML.pm parser.pm; do \
        sed 's@^\(use lib .\).*\(.; # METAF2XML_LIB\)$@\1'${METAF2XML_LIB}'\2@' \
        metaf2xml/$f > ${METAF2XML_LIB}/metaf2xml/$f; \
    done
    cp man/man3/metaf2xml::{parser,XML}.3pm ${METAF2XML_MAN}/man3
    cp man/man1/metaf2xml.1 ${METAF2XML_MAN}/man1
fi

if [ "$1" = all -o "$1" = xsl ]; then
    installed=$1

    mkdir -p ${METAF2XML_XSL}
    cp ${METAF2XML_XSL_FILES} stations.xml ${METAF2XML_XSL}/
fi

if [ "$1" = all -o "$1" = cgi ]; then
    installed=$1

    mkdir -p ${CGI_BIN_DIR} ${HTDOCS_DIR} ${METAF2XML_MAN}/man1
    sed 's@^\(my .METAF2XML_BIN = .\).*\(.;\)$@\1'"${METAF2XML_BIN}"'\2@' metaf.pl | \
    sed 's@^\(my .METAF2XML_XSL = .\).*\(.;\)$@\1'"${METAF2XML_XSL}"'\2@' | \
    sed 's@^\(my .CGI_DATA_DIR = .\).*\(.;\)$@\1'"${CGI_DATA_DIR}"'\2@' | \
    sed 's@^\(my .CGI_LOG_FILE = .\).*\(.;\)$@\1'"${CGI_LOG_FILE}"'\2@' | \
    sed 's@^\(my .CGI_TMP_DIR = .\).*\(.;\)$@\1'"${CGI_TMP_DIR}"'\2@' | \
    sed 's@^\(my .CURL = .\).*\(.;\)$@\1'"${CURL}"'\2@' | \
    sed 's@^\(my .CURL_PROXY_OPTS = .\).*\(.;\)$@\1'"${CURL_PROXY_OPTS}"'\2@' \
        > ${CGI_BIN_DIR}/metaf.pl
    chmod a+x ${CGI_BIN_DIR}/metaf.pl
    for f in metaf.xsl metaf-sum.xsl metaf-ui.xsl metaf-lang.xsl metaf-fullhtml.xsl metaf-sum-ui.xsl stations.xml; do \
        [ -L ${HTDOCS_DIR}/$f -o -f ${HTDOCS_DIR}/$f ] || ln -s ${METAF2XML_XSL}/$f ${HTDOCS_DIR}; \
    done
    cp man/man1/metaf.1 ${METAF2XML_MAN}/man1
fi

if [ -z "$installed" ]; then
    echo "usage: $0 {cgi|parser|xsl|all}"
    exit 1
fi
exit 0
