mim: run scripts from a specification file
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>
			
			
This commit is contained in:
		
				
					committed by
					
						 Denys Vlasenko
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							da7a6dbfa5
						
					
				
				
					commit
					981b2eff81
				
			
							
								
								
									
										39
									
								
								applets_sh/mim
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								applets_sh/mim
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| #!/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 "$@" | ||||
							
								
								
									
										15
									
								
								miscutils/mim.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								miscutils/mim.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| //config:config MIM | ||||
| //config:	bool "mim (0.5 kb)" | ||||
| //config:	default y | ||||
| //config:	depends on FEATURE_SH_EMBEDDED_SCRIPTS | ||||
| //config:	help | ||||
| //config:	Run a script from a Makefile-like specification file. | ||||
| //config:	Unlike 'make' dependencies aren't supported. | ||||
|  | ||||
| //applet:IF_MIM(APPLET_SCRIPTED(mim, scripted, BB_DIR_USR_SBIN, BB_SUID_DROP, mim)) | ||||
|  | ||||
| //usage:#define mim_trivial_usage | ||||
| //usage:	"[-f FILE] [SHELL_OPTIONS] [TARGET] ..." | ||||
| //usage:#define mim_full_usage "\n\n" | ||||
| //usage:	"Run a script from a Makefile-like specification file\n" | ||||
| //usage:     "\n	-f FILE		Spec file (default Mimfile)" | ||||
		Reference in New Issue
	
	Block a user