The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/bin/zsh

set -e
setopt extendedglob

function die { echo 1>&2 $*; exit 1 }

function usage {
    cat 1>&2 <<EOF
Usage: ${0:t} [--cgi] [--app] /LOCATION

${0:t} is a command to generate Apache's .htaccess for you.
Please specify location (local part of URL) for current directory.

If --cgi option is given, this will also copy cgi-bin/runyatt.cgi for you.
If --app option is given, ../app.psgi is also copied.

Typically, if your DOCUMENT_ROOT is /var/www/html and
your contents are placed under /var/www/html/foo/bar,
location will be /foo/bar.
EOF

    exit 1
}


zparseopts -D -K -cgi=o_cgi -app=o_app || exit 1

((ARGC)) || usage

LOC=$1; shift

cgi=cgi-bin/runyatt.cgi

if (($#o_cgi)); then
    cgi_sample=$0:h/../samples/runyatt.cgi
    [[ -e $cgi_sample ]] || die "Can't find cgi sample: $cgi_sample"
    mkdir -p $cgi:h
    cp -v $cgi_sample $cgi

    cat <<EOF > $cgi:h/.htaccess
Options +ExecCGI -Indexes
EOF

fi

if (($#o_app)); then
    app_sample=$0:h/../samples/app.psgi
    [[ -e $cgi_sample ]] || die "Can't find cgi sample: $cgi_sample"
    cp -v $app_sample ../
fi

[[ -e $cgi ]] || die "Can't find cgi script: $cgi"

cat <<EOF | tee .htaccess
Action x-yatt-handler  $LOC/$cgi
AddHandler x-yatt-handler .yatt .ydo .ytmpl
DirectoryIndex index.yatt index.html
EOF