#!/usr/bin/env bash

set -e

forced=1
if [[ "${1}" = "make" ]]; then
    forced=0
fi

pushd "${BASH_SOURCE%/*}/../../Source/LexerParser" > /dev/null

extra_args_CommandArgument="--never-interactive --batch"

for lexer in            \
    CommandArgument     \
    CTestResourceGroups \
    DependsJava         \
    Expr                \
    Fortran             \
    GccDepfile
do
    cxx_file=cm${lexer}Lexer.cxx
    h_file=cm${lexer}Lexer.h
    in_file=cm${lexer}Lexer.in.l

    if [[ (${in_file} -nt ${cxx_file}) || (${in_file} -nt ${h_file}) || (${forced} -gt 0) ]]; then
    extra_args=`eval echo \\${extra_args_\${lexer}}`
    echo "Generating Lexer ${lexer}"
        flex --nounistd ${extra_args} -DFLEXINT_H --noline --header-file=${h_file} -o${cxx_file} ${in_file}
        sed -i 's/\s*$//'                       ${h_file} ${cxx_file}   # remove trailing whitespaces
        sed -i '${/^$/d;}'                      ${h_file} ${cxx_file}   # remove blank line at the end
        sed -i '1i#include "cmStandardLexer.h"' ${cxx_file}             # add cmStandardLexer.h include
    else
        echo "Skipped generating Lexer ${lexer}"
    fi
done


# these lexers (at the moment only the ListFileLexer) are compiled as C and do not generate a header
for lexer in ListFile
do
    c_file=cm${lexer}Lexer.c
    in_file=cm${lexer}Lexer.in.l

    if [[ (${in_file} -nt ${c_file}) || (${forced} -gt 0) ]]; then
        echo "Generating Lexer ${lexer}"
        flex --nounistd -DFLEXINT_H --noline -o${c_file} ${in_file}
        sed -i 's/\s*$//'                       ${c_file}   # remove trailing whitespaces
        sed -i '${/^$/d;}'                      ${c_file}   # remove blank line at the end
        sed -i '1i#include "cmStandardLexer.h"' ${c_file}   # add cmStandardLexer.h include
    else
        echo "Skipped generating Lexer ${lexer}"
    fi

done

popd > /dev/null
