51 lines
874 B
Bash
Executable File
51 lines
874 B
Bash
Executable File
#!/bin/bash
|
|
|
|
SRCDIR=src
|
|
MODULES=(Utils Menu Level Mode MainMenu)
|
|
MAIN_MODULE=Main
|
|
|
|
PRAGMA_PATTERN='^{-# LANGUAGE [a-zA-Z]\+ #-}$'
|
|
IMPORT_PATTERN='^import '
|
|
|
|
sourceFile()
|
|
{
|
|
printf "${SRCDIR}/${1}.hs"
|
|
}
|
|
|
|
pragmas()
|
|
{
|
|
grep -rh "${PRAGMA_PATTERN}" "${SRCDIR}" | sort -u
|
|
}
|
|
|
|
imports()
|
|
{
|
|
local modulesPattern="$(echo ${MODULES[@]} | sed 's: :\\|:g')"
|
|
grep -rh "${IMPORT_PATTERN}" "${SRCDIR}" | grep -v "\(${modulesPattern}\)" | sort -u
|
|
}
|
|
|
|
body()
|
|
{
|
|
grep -vh "${PRAGMA_PATTERN}" "$(sourceFile "${1}")" |\
|
|
uncork |\
|
|
grep -v "${IMPORT_PATTERN}" |\
|
|
cat -s
|
|
}
|
|
|
|
uncork()
|
|
{
|
|
LINE="null"
|
|
while ([ -z "${LINE}" ] || [ -n "${LINE%%module*}" ]); do read LINE; done
|
|
while [ -n "${LINE}" ]; do read LINE; done
|
|
cat
|
|
}
|
|
|
|
pragmas
|
|
grep '^module' "$(sourceFile ${MAIN_MODULE})"
|
|
printf "\n"
|
|
imports
|
|
for module in ${MODULES[@]}
|
|
do
|
|
body "${module}"
|
|
done
|
|
body "${MAIN_MODULE}"
|