#!/bin/sh
#
# OpenXPKI Configuration Script
#
# Written by Martin Bartosch for the OpenXPKI project 2006
# Copyright (c) 2006 by The OpenXPKI Project
# $Revision: 504 $
#

CFG="bin/openxpki-metaconf"

CONFDIR="etc"
TEMPLATEDIR="$CONFDIR/templates"
TEMPLATE="default"

PREFIX="/usr"

usage() {
    cat <<EOF
Usage: configure [OPTIONS]

Prepare OpenXPKI for installation.

Options:
   --help         display this help text and exit
   --prefix       set installation prefix (Default: $PREFIX)
   --             all options following -- are passed to openxpki-metaconf

This script prepares the OpenXPKI deployment environment for installation
on your system.

Example:

./configure --prefix /usr/local
make
make install

EOF

}


METACONF_OPTS=""

# check infrastructure
ERRORS=0
# TODO: we should check non-standard modules used in the openxpki[adm|ctl]
# as well
echo "Checking required OpenXPKI Perl modules..."
for module in OpenXPKI OpenXPKI::Client ; do
    echo -n "$module: "
    if perl -e "use $module;" >/dev/null 2>&1 ; then
	echo "OK"
    else
	echo "NOT FOUND"
	ERRORS=1
    fi
done

if [ "$ERRORS" != "0" ] ; then
    echo "Pre-installation check found errors."
    echo "Please install the missing Perl modules before proceeding."
    exit 1
fi


USER=`id -nu`
GROUP=`id -ng`

ADMUSER="$USER"
ADMGROUP="$GROUP"
if [ "$USER" != "root" ] ; then
    echo "Preparing for non-root installation (user: $USER, group: $GROUP)"
    RUNUSER="$USER"
    RUNGROUP="$GROUP"
fi


[ -n "$RUNUSER" ] && METACONF_OPTS="$METACONF_OPTS --setcfg server.runuser=$RUNUSER"
[ -n "$RUNGROUP" ] && METACONF_OPTS="$METACONF_OPTS --setcfg server.rungroup=$RUNGROUP"
METACONF_OPTS="$METACONF_OPTS --setcfg server.admuser=$ADMUSER"
METACONF_OPTS="$METACONF_OPTS --setcfg server.admgroup=$ADMGROUP"

while [ -n "$1" ] ; do
    case "$1" in
	--help)
	    usage
	    exit 0
	    ;;
	--prefix)
	    PREFIX="$2"
	    shift
	    shift
	    ;;
	--)
	    shift
	    METACONF_OPTS="$METACONF_OPTS $*"
	    echo "Additional options to openxpki-metaconf: '$*'"
	    shift $#
	    ;;
	*)
	    echo "Unrecognized option $1"
	    exit 1
	    ;;
    esac
done

echo "Configuring for installation in $PREFIX..."
# create initial configuration with new prefix
for TEMPLATE in $TEMPLATEDIR/* ; do
    echo "Creating template set configuration in $TEMPLATE"
    if [ -d $TEMPLATE ] ; then
	$CFG --config $TEMPLATE/openxpki.conf.in \
	    --writecfg $TEMPLATE/openxpki.conf \
	    --force \
	    --setcfg dir.prefix="$PREFIX" \
	    $METACONF_OPTS
    fi
done

echo "Creating Makefile..."
$CFG --config $TEMPLATEDIR/default/openxpki.conf \
    --file Makefile.in >Makefile

echo
echo "Initial configuration complete. You may now run"
echo
echo "make"
echo "make install"
echo
echo "in order to build and install the OpenXPKI administrative environment."
echo

