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 "$@"
 |