From 42c0d49c3e4c0fc55a498bc63d0db78308271883 Mon Sep 17 00:00:00 2001 From: nuex Date: Tue, 11 Mar 2014 11:22:46 -0400 Subject: Give release scripts ability to handle directories with spaces --- priv/templates/bin.dtl | 60 +++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 25 deletions(-) (limited to 'priv/templates/bin.dtl') diff --git a/priv/templates/bin.dtl b/priv/templates/bin.dtl index 8f8b048..4434552 100755 --- a/priv/templates/bin.dtl +++ b/priv/templates/bin.dtl @@ -2,51 +2,61 @@ set -e -SCRIPT_DIR=`dirname $0` -RELEASE_ROOT_DIR=`cd $SCRIPT_DIR/.. && pwd` -REL_NAME={{ rel_name }} -REL_VSN={{ rel_vsn }} -ERTS_VSN={{ erts_vsn }} -REL_DIR=$RELEASE_ROOT_DIR/releases/$REL_VSN -ERL_OPTS={{ erl_opts }} +SCRIPT_DIR="$(dirname "$0")" +RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +REL_NAME="{{ rel_name }}" +REL_VSN="{{ rel_vsn }}" +ERTS_VSN="{{ erts_vsn }}" +REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN" +ERL_OPTS="{{ erl_opts }}" find_erts_dir() { - local erts_dir=$RELEASE_ROOT_DIR/erts-$ERTS_VSN + local erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN" if [ -d "$erts_dir" ]; then - ERTS_DIR=$erts_dir; - ROOTDIR=$RELEASE_ROOT_DIR + ERTS_DIR="$erts_dir"; + ROOTDIR="$RELEASE_ROOT_DIR" else - local erl=`which erl` - local erl_root=`$erl -noshell -eval "io:format(\\"~s\\", [code:root_dir()])." -s init stop` - ERTS_DIR=$erl_root/erts-$ERTS_VSN - ROOTDIR=$erl_root + local erl="$(which erl)" + local erl_root="$("$erl" -noshell -eval "io:format(\\"~s\\", [code:root_dir()])." -s init stop)" + ERTS_DIR="$erl_root/erts-$ERTS_VSN" + ROOTDIR="$erl_root" fi } find_sys_config() { - local possible_sys=$REL_DIR/sys.config + local possible_sys="$REL_DIR/sys.config" if [ -f "$possible_sys" ]; then - SYS_CONFIG="-config $possible_sys" + SYS_CONFIG="$possible_sys" fi } find_vm_args() { - local possible_vm_args=$REL_DIR/vm.args + local possible_vm_args="$REL_DIR/vm.args" if [ -f "$possible_vm_args" ]; then - VM_ARGS="-args_file $possible_vm_args" + VM_ARGS="$possible_vm_args" fi } find_erts_dir find_sys_config find_vm_args -export ROOTDIR=$RELEASE_ROOT_DIR -export BINDIR=$ERTS_DIR/bin -export EMU=beam -export PROGNAME=erl -export LD_LIBRARY_PATH=$ERTS_DIR/lib:$LD_LIBRARY_PATH +export ROOTDIR="$RELEASE_ROOT_DIR" +export BINDIR="$ERTS_DIR/bin" +export EMU="beam" +export PROGNAME="erl" +export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" -cd $ROOTDIR +cd "$ROOTDIR" -$BINDIR/erlexec $ERL_OPTS $SYS_CONFIG $VM_ARGS -boot $REL_DIR/$REL_NAME $@ +# Save extra arguments +ARGS="$@" + +# Build arguments for erlexec +set -- "$ERL_OPTS" +[ "$SYS_CONFIG" ] && set -- "$@" -config "$SYS_CONFIG" +[ "$VM_ARGS" ] && set -- "$@" -args_file "$VM_ARGS" +set -- "$@" -boot "$REL_DIR/$REL_NAME" "$ARGS" + +# Boot the release +"$BINDIR/erlexec" "$@" -- cgit v1.2.3