diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-11-03 17:10:43 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-11-03 17:10:43 -0500 |
commit | 3336085d81231d520e6fd2004f69deeeea2fa405 (patch) | |
tree | f6f6a2f4a222ae009c0faa672e4f45dde5e24eb5 | |
parent | c0b4c8ceeb01e1c024b40a3edb69f04139bf6203 (diff) |
add input type detectionm4n
-rw-r--r-- | m4n.sh | 47 |
1 files changed, 44 insertions, 3 deletions
@@ -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 } |