From 3336085d81231d520e6fd2004f69deeeea2fa405 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Tue, 3 Nov 2020 17:10:43 -0500 Subject: add input type detection --- m4n.sh | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/m4n.sh b/m4n.sh index 8e70b9e..69a3648 100644 --- a/m4n.sh +++ b/m4n.sh @@ -4,9 +4,42 @@ die() { exit 1 } -main() { - om4=text_m4 +get_file_type() { + if (head -n1 $1 | grep -q m4npage); then + echo m4n + return + fi + if grep -q 'int main' $1; then + echo utility + return + fi + + # TODO: detect other types + echo function +} + +m4n_m4n() { + cat +} + +utility_m4n() { + cat <<-EOF + m4npage($1, utility) + brief(something) + describe(is a program.) + EOF +} + +function_m4n() { + cat <<-EOF + m4npage($1, function) + brief(something else) + describe(is a function.) + EOF +} + +main() { while getopts O: opt; do case $opt in @@ -24,12 +57,20 @@ main() { shift $((OPTIND - 1)) + if [ $# -lt 1 ]; then die 'missing operand\n' elif [ $# -gt 1 ]; then die 'too many operands\n' + fi + + type=$(get_file_type $1) + + if [ $type != "m4n" ]; then + # TODO: handle -O output (default to M4N) + ${type}_m4n $1 else - $om4 $1 | m4 + ${om4:-text_m4} $1 | m4 fi } -- cgit v1.2.1