mim runs scripts from a specification file which can be thought
of as an extremely limited Makefile. Neither make variables nor
dependencies are supported. By default the file 'Mimfile' is read.
An example:
hello:
echo hello $1
clean:
rm -rf *
The command 'mim' or 'mim hello' will echo 'hello'. Unlike 'make'
arguments after the first are available to the script; they don't
specify additional targets.
mim isn't enabled by default. Enabling it increases the size of the
binary by about 500 bytes.
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
40 lines
545 B
Bash
Executable File
40 lines
545 B
Bash
Executable File
#!/bin/sh
|
|
MIMFILE="Mimfile"
|
|
if [ $# -ge 2 ] && [ "$1" = "-f" ]
|
|
then
|
|
MIMFILE="$2"
|
|
shift 2
|
|
fi
|
|
exec <"$MIMFILE" || exit 1
|
|
{
|
|
INCASE=false
|
|
while read -r REPLY
|
|
do
|
|
case $REPLY in
|
|
*:)
|
|
if ! $INCASE
|
|
then
|
|
printf '[ $# -eq 0 ] && set -- "%s"
|
|
TARGET="$1"
|
|
shift
|
|
case "$TARGET" in
|
|
' "${REPLY%:}"
|
|
else
|
|
printf ';;\n'
|
|
fi
|
|
printf '%s)\n' "${REPLY%:}"
|
|
INCASE=true
|
|
;;
|
|
"") ;;
|
|
*) printf '%s\n' "${REPLY##[ ]}";;
|
|
esac
|
|
done
|
|
$INCASE && printf ';;\n'
|
|
printf '*)
|
|
echo "Unknown command $TARGET"
|
|
exit 1
|
|
;;
|
|
esac
|
|
'
|
|
} | sh -s "$@"
|