#!/bin/bash

function titlecase ()
{
    X=$(echo $* | tr 'A-Z' 'a-z')
    echo -n ${X:0:1} | tr 'a-z' 'A-Z'
    echo ${X:1}
}
MODULES=$(grep "^include" modules.mk | cut -f2 -d' ' | cut -f1 -d'/')
for MODULE in $MODULES; do
    echo "Processing module '$MODULE'..."
    MODULENAME=$(titlecase $MODULE)
    if [ ! -f docs/Module/$MODULENAME.md ]; then
        echo "Creating docs/Module/$MODULENAME.md..."
        gridlabd --modhelp=md $MODULE > docs/Module/$MODULENAME.md 2>&1 || rm docs/Module/$MODULENAME.md 
    fi

    if [ -f docs/Module/$MODULENAME.md -a ! -d docs/Module/$MODULENAME ]; then
        mkdir docs/Module/$MODULENAME
    fi
    CLASSES=$(gridlabd --modhelp $MODULE | grep ^class | cut -f2 -d' ')
    for CLASS in $CLASSES; do
        CLASSNAME=$(titlecase $CLASS)
        if [ ! -f docs/Module/$MODULE/$CLASSNAME.md ]; then
            echo "Creating docs/Module/$MODULENAME/$CLASSNAME.md..."
            gridlabd --modhelp=md $MODULE:$CLASS > docs/Module/$MODULENAME/$CLASSNAME.md 2>&1 || rm docs/Module/$MODULENAME/$CLASSNAME.md 
        fi
    done

    if [ -f docs/Module/$MODULENAME.md -a ! -d docs/Module/$MODULENAME/Global ]; then
        mkdir docs/Module/$MODULENAME/Global
    fi
    GLOBALS=$(gridlabd --libinfo $MODULE 2>&1 | grep '^Globals' | cut -f2- -d' ')
    for GLOBAL in $GLOBALS; do
        GLOBALNAME=$(titlecase $GLOBAL)
        if [ ! -f docs/Module/$MODULENAME/Global/$GLOBALNAME.md ]; then
            cat > docs/Module/$MODULENAME/Global/$GLOBALNAME.md <<-END
[[/Module/$MODULENAME/Global/$GLOBALNAME]] -- Module $MODULE global variable $GLOBAL

# Synopsis
Shell:
~~~
  host% gridlabd -D|--define $GLOBAL=<value>
~~~
GLM:
~~~
  #set $GLOBAL=<value>
~~~

# Description

TODO

# See also
* [[/Module/$MODULENAME]]
END
        fi
    done
done
