|
1 | 1 | #!/usr/bin/env bash
|
| 2 | + |
2 | 3 | # SPDX-FileCopyrightText: (c) 2016 ale5000
|
3 | 4 | # SPDX-License-Identifier: GPL-3.0-or-later
|
4 |
| - |
5 | 5 | # shellcheck enable=all
|
6 | 6 |
|
7 |
| -set -u |
8 |
| -# shellcheck disable=SC3040,SC3041,SC2015 # Ignore: In POSIX sh, set option xxx is undefined. / In POSIX sh, set flag -X is undefined. / C may run when A is true. |
9 |
| -{ |
10 |
| - # Unsupported set options may cause the shell to exit (even without set -e), so first try them in a subshell to avoid this issue |
11 |
| - (set 2> /dev/null -o posix) && set -o posix || true |
12 |
| - (set 2> /dev/null +H) && set +H || true |
13 |
| - (set 2> /dev/null -o pipefail) && set -o pipefail || true |
14 |
| -} |
15 |
| - |
16 | 7 | if test "${A5K_FUNCTIONS_INCLUDED:-false}" = 'false'; then
|
| 8 | + main() |
| 9 | + { |
| 10 | + local _newline _main_dir |
17 | 11 |
|
18 |
| - # Execute only if the first initialization has not already been done |
19 |
| - if test -z "${MODULE_NAME-}"; then |
| 12 | + # Execute only if the first initialization has not already been done |
| 13 | + if test -z "${MAIN_DIR-}" || test -z "${PLATFORM-}" || test -z "${MODULE_NAME-}"; then |
20 | 14 |
|
21 |
| - if test -d '/usr/bin'; then PATH="/usr/bin:${PATH:-/usr/bin}"; fi |
| 15 | + if test -d '/usr/bin'; then PATH="/usr/bin:${PATH:-/usr/bin}"; fi |
22 | 16 |
|
23 |
| - if test -z "${MAIN_DIR-}"; then |
24 |
| - # shellcheck disable=SC3028 # Ignore: In POSIX sh, BASH_SOURCE is undefined. |
25 |
| - if test -n "${BASH_SOURCE-}" && MAIN_DIR="$(dirname "${BASH_SOURCE:?}")" && MAIN_DIR="$(realpath "${MAIN_DIR:?}")"; then |
26 |
| - export MAIN_DIR |
27 |
| - else |
28 |
| - unset MAIN_DIR |
| 17 | + if test -z "${MAIN_DIR-}"; then |
| 18 | + # shellcheck disable=SC3028 # Ignore: In POSIX sh, BASH_SOURCE is undefined. |
| 19 | + if test -n "${BASH_SOURCE-}" && MAIN_DIR="$(dirname "${BASH_SOURCE:?}")" && MAIN_DIR="$(realpath "${MAIN_DIR:?}")"; then |
| 20 | + export MAIN_DIR |
| 21 | + else |
| 22 | + unset MAIN_DIR |
| 23 | + fi |
| 24 | + fi |
| 25 | + |
| 26 | + if test -n "${MAIN_DIR-}" && test -z "${USER_HOME-}"; then |
| 27 | + if test "${TERM_PROGRAM-}" = 'mintty'; then unset TERM_PROGRAM; fi |
| 28 | + export USER_HOME="${HOME-}" |
| 29 | + export HOME="${MAIN_DIR:?}" |
29 | 30 | fi
|
30 |
| - fi |
31 | 31 |
|
32 |
| - if test -n "${MAIN_DIR-}" && test -z "${USER_HOME-}"; then |
33 |
| - if test "${TERM_PROGRAM-}" = 'mintty'; then unset TERM_PROGRAM; fi |
34 |
| - export USER_HOME="${HOME-}" |
35 |
| - export HOME="${MAIN_DIR:?}" |
36 | 32 | fi
|
37 | 33 |
|
38 |
| - fi |
| 34 | + unset STARTED_FROM_BATCH_FILE |
| 35 | + unset IS_PATH_INITIALIZED |
| 36 | + unset __QUOTED_PARAMS |
39 | 37 |
|
40 |
| - unset STARTED_FROM_BATCH_FILE |
41 |
| - unset IS_PATH_INITIALIZED |
42 |
| - unset QUOTED_PARAMS |
43 |
| - if test "${#}" -gt 0; then |
44 |
| - case "${*}" in |
45 |
| - *"'"*) |
46 |
| - printf 'WARNING: Single quote found, parameters dropped\n' |
47 |
| - ;; |
48 |
| - *) |
49 |
| - QUOTED_PARAMS="$(printf " '%s'" "${@}")" |
50 |
| - export QUOTED_PARAMS |
51 |
| - ;; |
52 |
| - esac |
53 |
| - fi |
| 38 | + export DO_INIT_CMDLINE=1 |
| 39 | + if test -n "${MAIN_DIR-}"; then _main_dir="${MAIN_DIR:?}"; else _main_dir='.'; fi |
| 40 | + |
| 41 | + if test "${PLATFORM-}" = 'win' && test "${IS_BUSYBOX-}" = 'true'; then |
| 42 | + exec ash -s -c ". '${_main_dir:?}/includes/common.sh' || exit \${?}" 'ash' "${@}" |
| 43 | + else |
| 44 | + if test "${#}" -gt 0; then |
| 45 | + _newline=' |
| 46 | +' |
| 47 | + case "${*}" in |
| 48 | + *"${_newline:?}"*) |
| 49 | + printf 'WARNING: Newline character found, parameters dropped\n' |
| 50 | + ;; |
| 51 | + *) |
| 52 | + __QUOTED_PARAMS="$(printf '%s\n' "${@}")" |
| 53 | + export __QUOTED_PARAMS |
| 54 | + ;; |
| 55 | + esac |
| 56 | + fi |
54 | 57 |
|
55 |
| - export DO_INIT_CMDLINE=1 |
56 |
| - if test -n "${MAIN_DIR-}"; then |
57 |
| - exec "${BASH:-${SHELL:-bash}}" --init-file "${MAIN_DIR:?}/includes/common.sh" |
| 58 | + exec "${BASH:-${SHELL:-bash}}" --init-file "${_main_dir:?}/includes/common.sh" |
| 59 | + fi |
| 60 | + } |
| 61 | + |
| 62 | + if test "${#}" -gt 0; then |
| 63 | + main "${@}" |
58 | 64 | else
|
59 |
| - exec "${BASH:-${SHELL:-bash}}" --init-file './includes/common.sh' |
| 65 | + main |
60 | 66 | fi
|
61 |
| - |
62 | 67 | fi
|
0 commit comments