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:
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)"
|
Loading…
Reference in New Issue
Block a user