53 lines
824 B
Bash
Executable File
53 lines
824 B
Bash
Executable File
#!/bin/sh
|
|
|
|
_usage () {
|
|
cat<<EOF
|
|
Usage: ${1##*/} [OPTIONS] SCRIPT [ARGS...]
|
|
|
|
Run Emacs Lisp SCRIPT.
|
|
|
|
Options:
|
|
|
|
-b: Byte-compile before running.
|
|
-c: Remove byte code once finished.
|
|
EOF
|
|
}
|
|
|
|
OPT_BYTE=false
|
|
OPT_CLEAN=false
|
|
while getopts :bc OPT; do
|
|
case $OPT in
|
|
b)
|
|
OPT_BYTE=true ;;
|
|
c)
|
|
OPT_CLEAN=true ;;
|
|
\?)
|
|
_usage "$0"
|
|
exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND - 1))
|
|
if [ $# -eq 0 ]; then
|
|
_usage "$0"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v emacs >/dev/null 2>&1; then
|
|
echo 'emacs not found in PATH. Exiting.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
script="$1"
|
|
if $OPT_BYTE && [ "${1##*.}" = "el" ]; then
|
|
script="${1%.*}.elc"
|
|
emacs -Q --batch -f batch-byte-compile "$1" 2>/dev/null
|
|
fi
|
|
shift
|
|
|
|
emacs -Q --script "$script" "$@" 2>&1
|
|
$OPT_CLEAN && rm "$script"
|
|
|
|
## WARNING: never leave a script on a condition, return code be unexpectedly != 0.
|
|
exit 0
|