123456789101112131415161718192021222324252627282930313233 |
- #!/usr/bin/env sh
- IFS=''; set -fCu # safe mode: no split/glob = no quoting headaches
- let() { return $((!($1))); }
- # Automatically (re-)indent make...done blocks in a Mamfile.
- # Usage: Mamfile_indent <Mamfile >Mamfile.new
- #
- # Should work on all current POSIX compliant shells.
- # By Martijn Dekker <martijn@inlv.org>, 2021. Public domain.
- # Spacing per indentation level. Edit to change style.
- indent=' ' # one tab
- # Remove existing indentation, add new indentation.
- indentlvl=0
- sed 's/^[[:space:]]*//' \
- | while read -r line
- do case $line in
- '') continue ;;
- done*) let "indentlvl -= 1" ;;
- esac
- spc=
- i=0
- while let "(i += 1) <= indentlvl"
- do spc=$indent$spc
- done
- printf '%s\n' $spc$line
- case $line in
- make*) let "indentlvl += 1" ;;
- esac
- done
|