#!/bin/bash

helpfile=$1
name=$2
name2desc=$3
th=$(echo ${name} | tr '[a-z]' '[A-Z]')
ver=${4}
apidate=${5}
cr="
"

error() { echo "$@" 1>&2; }
fail() { [ $# -eq 0 ] || error "$@" ; exit 1; }
Usage() {
   cat <<EOF
Usage: ${0##*/} helpfile name name2desc-file version apidate
   helpfile: file with output from --help of command
   name: the name of this command
   name2desc-file: file that contains tab delimited name:description pairs
EOF
}

[ $# -eq 5 ] || { Usage 1>&2; exit 1; }

OIFS=${IFS}

TEMP_D=""
cleanup() {
   [ -z "${TEMP_D}" -o ! -d "${TEMP_D}" ] || rm -Rf "${TEMP_D}"
}
TEMP_D=$(mktemp -d ${TMPDIR:-/tmp}/${0##*/}.XXXXXX)
trap cleanup EXIT

helpout="${TEMP_D}/helpout"
sed 's,^[ ][ ],,' "${helpfile}" > "${helpout}"

IFS=${cr}
sections=( $(egrep "^[A-Z][A-Z ]*$" "${helpout}" ) )
IFS=${OIFS}

getsection() {
   local sec=$1 file=$2
   local sa # sed args
   local ee="--expression="
   sa=( -e "/^${sec}$/,/^[A-Z][A-Z ]*/!d" )
   sa[${#sa[@]}]="-e"
   sa[${#sa[@]}]="s/^${sec}$/.SH ${sec}\n.PP/"
   sa[${#sa[@]}]=$ee's/--\([a-zA-Z-]*\)/\\fB--\1\\fR/g'
   sa[${#sa[@]}]=$ee's/^\([[:space:]]*\)-\([a-zA-Z?]\)/\1\\fB-\2\\fR/'
   sa[${#sa[@]}]=$ee's/-/\\-/g'
   
   sed "${sa[@]}" "$file" | sed -e 's,^  , ,' -e '$d'
}

desc=$(awk '-F\t' '$1 == name { print $2 }' "name=${name}" "${name2desc}")
[ -n "$desc" ] ||
   fail "No description found for $name in $name2desc"

printf '.TH %s "%s" "%s" "%s" "%s"\n' "${th}" 1 "${ver} api=${apidate}" \
   "Elastic Load Balancing command line tools" "User Commands"
cat <<EOF
.SH NAME
${name} \- ${desc}
EOF
for x in "${sections[@]}"; do
   getsection "${x}" "${helpout}"
done

verurl="http://docs.amazonwebservices.com/ElasticLoadBalancing/${apidate}/DeveloperGuide/"
latesturl="http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/"
cat <<EOF
.SH SEE ALSO
  ${verurl}
  ${latesturl}
EOF

exit 0
