#! /bin/bash
# Last edited on 2012-12-08 21:29:22 by stolfilocal

PROG_NAME=${0##*/}
PROG_DESC="bla bla bla."
PROG_HELP=(
  ''"${PROG_NAME}"' \\'
  '\n    [ -op0 ] \\'
  '\n    [ -op2 {ARG1} {ARG2} ] {NAME1} {NAME2} {FILE..} \\'
  '\n    [ -help ] [ -info ]'
)
PROG_INFO=(
  'NAME'
  '\n  '"${PROG_NAME}"' - '"${PROG_DESC}"'.'
  '\n'
  '\nSYNOPSIS' \
  '\n  '"${PROG_HELP[*]}"''
  '\n'
  '\nDESCRIPTION'
  '\n  Bla bla bla bla bla files {FILE..}, bla'
  '\n  bla bla bla.  Bla bla bla, bla bla bla'
  '\n  bla bla bla bla bla:'
  '\n'
  '\n    {ARG1}--{ARG2}.txt  bla bla bla.'
  '\n    {NAME1}.bla         bla bla \"{NAME1}.c\" bla \"{NAME1}.h\".'
  '\n    {NAME2}-{NN}.bla    bla bla bla where {NN} bla bla.'
  '\n    {FILEi}             bla bla bla {FILES...}'
  '\n'
  '\nOPTIONS'
  '\n  -op0'
  '\n    If present, bla bla bla. If absent, bla.'
  '\n    bla bla bla.'
  '\n'
  '\n  -op2 {ARG1} {ARG2}'
  '\n    If present, bla bla bla. If absent, bla'
  '\n    bla bla bla {ARG1} is "BLA" bla {ARG2} is "BLA".'
  '\n'
  '\nSEE ALSO'
  '\n  find-all-sources(1)'
  '\nAUTHOR' \
  '\n  Created 2008-05-02 by Jorge Stolfi, Unicamp'
)

# ----------------------------------------------------------------------
# INTERNAL OPTIONS

bla_dir="bla/bla"
bla_ini=00
bla_fin=20

# ----------------------------------------------------------------------
# COMMAND LINE PARSING

# Parse command line switches (keyword parameters): 
bla_op0=0
bla_arg1=0
bla_arg2=0
bla_files=( )
while [[ ( $# -ge 1 ) && ( "/$1" =~ /-.* ) ]]; do
  if [[ ( $# -ge 1 ) && ( "/$1" == "/-op0" ) ]]; then 
    shift; bla_op0=0
  elif [[ ( $# -ge 3 ) && ( "/$1" == "/-op2" ) ]]; then 
    shift; 
    bla_arg1="$1"; shift
    bla_arg2="$1"; shift
    bla_files=( "${bla_arg1}.bla" "${bla_files[@]}" )
  elif [[ ( $# -ge 1 ) && ( "/$1" == "/-help" ) ]]; then 
    shift; printf "usage:\n  ${PROG_HELP[*]}\n" 1>&2; exit 0
  elif [[ ( $# -ge 1 ) && ( "/$1" == "/-info" ) ]]; then 
    shift; printf "${PROG_INFO[*]}" 1>&2; exit 0
  else
    echo "unknown option $1" 1>&2
    printf "usage:\n  ${PROG_HELP[*]}" 1>&2 ; exit 1 
  fi
done 

# Parse remaining command line arguments (positional parameters):
if [[ $# -lt 2 ]]; then
  printf "usage:\n  ${PROG_HELP[*]}\n" 1>&2; exit 1
fi
bla_name1="$1"; shift
bla_name2="$1"; shift
bla_files=( "${bla_files[@]}" "$@" )

# Do it:
echo "bla bla bla ${bla_op0} ${bla_arg1} ${bla_arg2} ${bla_name1} ${bla_name2} ( ${bla_files[*]} )"

exit 0

