#!/bin/sh

# losh: lord of the shell scripts
# (one shell script to rule them all)
#
# Author: Steven Enten <steven@enten.fr>
# License : MIT
# Requirements: awk basename dirname echo eval grep ls shift
# Site: https//github.com/enten/losh

set -u

#
# consts
#
PROGNAME=$(basename $0)
PROGPATH=$(dirname $0)
PROGDESC="Lord of the shell scripts (one script to rull them all)"
PROGVERS="0.0.1"
TAB="    "

#
# vars
#
commands=
i=
j=
k=
tmp=

#
# usage
#
losh_usage() {
  echo "NAME:"
  echo "${TAB}${PROGNAME} - ${PROGDESC}"
  echo
  echo "VERSION:"
  echo "${TAB}${PROGVERS}"
  echo
  echo "USAGE:"
  echo "${TAB}${PROGNAME} [command] [arg...]"
  echo
  echo "COMMANDS:"
  for i in $commands; do
    echo -n "${TAB}${PROGNAME} ${i}"
    if grep 'CMDUSAGE=' $PROGPATH/$i >/dev/null; then
      tmp=$(grep 'CMDUSAGE=' $PROGPATH/$i)
      [ ! -z "$tmp" ] && echo -n " " && eval echo -n $(echo $tmp | awk -F '=' '{print $2}')
    fi
    echo

    echo -n "${TAB}${TAB}${TAB}${TAB}"
    if grep 'CMDDESC=' $PROGPATH/$i >/dev/null; then
      tmp=$(grep 'CMDDESC=' $PROGPATH/$i)
      [ ! -z "$tmp" ] && eval echo -n $(echo $tmp | awk -F '=' '{print $2}')
    fi
    echo
  done
  echo "${TAB}${PROGNAME} [?|h|help]"
  echo "${TAB}${TAB}${TAB}${TAB}Print this help message"
  echo
  [ $# -gt 0 ] && exit $1 || return 0
}

#
# main
#
losh_main() {
  commands=
  for i in $(ls $PROGPATH); do
    [ "$i" = "$PROGNAME" ] && continue
    [ -x "$PROGPATH/$i" ] && commands="$commands $i"
  done

  [ $# -eq 0 ] && losh_usage 1

  tmp=$1;
  shift

  i=0
  case $tmp in
    losh)
      echo "Nice try :)\n"
      losh_usage 1
      ;;
    \?|h|help)
      losh_usage 0
      ;;
    *)
      for j in $commands; do
        [ "$j" = "$tmp" ] && i=1 && break
      done
      ;;
  esac

  [ $i -eq 0 ] && losh_usage 1

  $PROGPATH/$tmp $@
}

losh_main $@
