12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/sh
- usage () {
- cat <<EOF>&2
- Usage: ${0##*/} [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
- exit 1 ;;
- esac
- done
- shift $((OPTIND - 1))
- if [ $# -eq 0 ]; then
- usage
- exit 1
- fi
- if ! command -v emacs >/dev/null 2>&1; then
- echo >&2 'emacs not found'
- exit 1
- fi
- script="$1"
- if $OPT_BYTE && [ "${0##*.}" = "el" ]; then
- script="${1%.*}.elc"
- emacs -Q --batch -f batch-byte-compile "$1" 2>/dev/null
- fi
- shift
- emacs -Q --script "$script" "$@" 2>&1
- status=$?
- $OPT_CLEAN && rm "$script"
- exit $status
|