diff options
Diffstat (limited to 'priv')
-rwxr-xr-x | priv/templates/extended_bin | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/priv/templates/extended_bin b/priv/templates/extended_bin index 0abf38b..6742cf7 100755 --- a/priv/templates/extended_bin +++ b/priv/templates/extended_bin @@ -47,6 +47,7 @@ POST_STOP_HOOKS="{{{ post_stop_hooks }}}" PRE_INSTALL_UPGRADE_HOOKS="{{{ pre_install_upgrade_hooks }}}" POST_INSTALL_UPGRADE_HOOKS="{{{ post_install_upgrade_hooks }}}" STATUS_HOOK="{{{ status_hook }}}" +EXTENSIONS="{{{ extensions }}}" relx_usage() { command="$1" @@ -107,7 +108,15 @@ relx_usage() { echo "Obtains node status information." ;; *) - echo "Usage: $REL_NAME {start|start_boot <file>|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|downgrade|install|uninstall|versions|escript|rpc|rpcterms|eval|status}" + # check for extension + IS_EXTENSION=$(relx_is_extension $command) + if [ "$IS_EXTENSION" = "1" ]; then + EXTENSION_SCRIPT=$(relx_get_extension_script $command) + relx_run_extension $EXTENSION_SCRIPT help + else + EXTENSIONS=`echo $EXTENSIONS | sed -e 's/|undefined//g'` + echo "Usage: $REL_NAME {start|start_boot <file>|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|downgrade|install|uninstall|versions|escript|rpc|rpcterms|eval|status|$EXTENSIONS}" + fi ;; esac } @@ -285,6 +294,40 @@ relx_run_hooks() { done } +relx_is_extension() { + EXTENSION=$1 + case "$EXTENSION" in + {{{ extensions }}}) + echo "1" + ;; + *) + echo "0" + ;; + esac +} + +relx_get_extension_script() { + EXTENSION=$1 + # below are the extensions declarations + # of the form: + # foo_extension="path/to/foo_script";bar_extension="path/to/bar_script" + {{{extension_declarations}}} + # get the command extension (eg. foo) and + # obtain the actual script filename that it + # refers to (eg. "path/to/foo_script" + eval echo "$"${EXTENSION}_extension"" +} + +relx_run_extension() { + # drop the first argument which is the name of the + # extension script + EXTENSION_SCRIPT=$1 + shift + # all extension script locations are expected to be + # relative to the start script location + [ "$SCRIPT_DIR/$EXTENSION_SCRIPT" ] && . "$SCRIPT_DIR/$EXTENSION_SCRIPT" $@ +} + find_erts_dir export ROOTDIR="$RELEASE_ROOT_DIR" export BINDIR="$ERTS_DIR/bin" @@ -671,7 +714,15 @@ case "$1" in relx_usage $TOPIC ;; *) - relx_usage + # check for extension + IS_EXTENSION=$(relx_is_extension $1) + if [ "$IS_EXTENSION" = "1" ]; then + EXTENSION_SCRIPT=$(relx_get_extension_script $1) + shift + relx_run_extension $EXTENSION_SCRIPT $@ + else + relx_usage $1 + fi exit 1 ;; esac |