1 | #!/usr/bin/env bash
|
2 | set -e
|
3 |
|
4 | echoerr() { echo "$@" 1>&2; }
|
5 |
|
6 | export SFDX_INSTALLER="false" BIN_NAME="run"
|
7 |
|
8 |
|
9 | NODE_FLAGS=()
|
10 |
|
11 |
|
12 | for arg in "$@"; do
|
13 | case "$arg" in
|
14 | --dev-suspend) NODE_FLAGS+=("--inspect-brk");;
|
15 | --dev-debug) DEV_DEBUG=true;;
|
16 | esac
|
17 | done
|
18 |
|
19 | get_script_dir () {
|
20 | SOURCE="${BASH_SOURCE[0]}"
|
21 |
|
22 | while [[ -h "$SOURCE" ]]; do
|
23 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
24 | SOURCE="$( readlink "$SOURCE" )"
|
25 | # If $SOURCE was a relative symlink (so no "/" as prefix, need to resolve it relative to the symlink base directory
|
26 | [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
|
27 | done
|
28 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
29 | echo "$DIR"
|
30 | }
|
31 |
|
32 | DIR=$(get_script_dir)
|
33 | CLI_HOME=$(cd && pwd)
|
34 | XDG_DATA_HOME="${XDG_DATA_HOME:="$CLI_HOME/.local/share"}"
|
35 | BIN_DIR="$XDG_DATA_HOME/$BIN_NAME/client/bin"
|
36 |
|
37 | if [[ "$SFDX_REDIRECTED" != "1" && "${SFDX_INSTALLER:-}" == "true" && -x "$BIN_DIR/$BIN_NAME" && ! "$BIN_DIR" -ef "$DIR" ]]; then
|
38 | if [[ "$DEV_DEBUG" == "true" ]]; then
|
39 | echoerr "Executing:" "$XDG_DATA_HOME/$BIN_NAME/client/bin/$BIN_NAME" "$@"
|
40 | fi
|
41 | "$XDG_DATA_HOME/$BIN_NAME/client/bin/$BIN_NAME" "$@"
|
42 | else
|
43 | MAIN_NAME="$BIN_NAME"
|
44 | NODE_PATH="node"
|
45 | if [[ "${SFDX_INSTALLER:-}" == "true" ]]; then
|
46 | MAIN_NAME="$MAIN_NAME.js"
|
47 | NODE_PATH="$DIR/$NODE_PATH"
|
48 | elif [[ -x "$(command -v node)" ]]; then
|
49 | NODE_PATH=node
|
50 | else
|
51 | echoerr 'Error: node is not installed.' >&2
|
52 | exit 1
|
53 | fi
|
54 | if [[ "$DEV_DEBUG" == "true" ]]; then
|
55 | echoerr "Executing:" "SFDX_BINPATH=$DIR/$BIN_NAME" "$NODE_PATH" "${NODE_FLAGS[@]}" "$DIR/$MAIN_NAME" "$@"
|
56 | fi
|
57 | SFDX_BINPATH="$DIR/$BIN_NAME" "$NODE_PATH" "${NODE_FLAGS[@]}" "$DIR/$MAIN_NAME" "$@"
|
58 | fi
|
59 |
|
\ | No newline at end of file |