function _starship_set_return() { return "${1:-0}"; }
starship_preexec() {
local PREV_LAST_ARG=$1
if [ "${STARSHIP_PREEXEC_READY:-}" = "true" ]; then
STARSHIP_PREEXEC_READY=false
STARSHIP_START_TIME=$(::STARSHIP:: time)
fi
: "$PREV_LAST_ARG"
}
starship_precmd() {
STARSHIP_CMD_STATUS=$? STARSHIP_PIPE_STATUS=("${PIPESTATUS[@]}")
if [[ ${BLE_ATTACHED-} && ${#BLE_PIPESTATUS[@]} -gt 0 ]]; then
STARSHIP_PIPE_STATUS=("${BLE_PIPESTATUS[@]}")
fi
if [[ -n "${BP_PIPESTATUS-}" ]] && [[ "${#BP_PIPESTATUS[@]}" -gt 0 ]]; then
STARSHIP_PIPE_STATUS=("${BP_PIPESTATUS[@]}")
fi
jobs &>/dev/null
local job NUM_JOBS=0 IFS=$' \t\n'
for job in $(jobs -p); do [[ $job ]] && ((NUM_JOBS++)); done
"${starship_precmd_user_func-:}"
_starship_set_return "$STARSHIP_CMD_STATUS"
if [[ -n "${STARSHIP_PROMPT_COMMAND-}" ]]; then
eval "$STARSHIP_PROMPT_COMMAND"
fi
local -a ARGS=(--terminal-width="${COLUMNS}" --status="${STARSHIP_CMD_STATUS}" --pipestatus="${STARSHIP_PIPE_STATUS[*]}" --jobs="${NUM_JOBS}" --shlvl="${SHLVL}")
if [[ -n "${STARSHIP_START_TIME-}" ]]; then
STARSHIP_END_TIME=$(::STARSHIP:: time)
STARSHIP_DURATION=$((STARSHIP_END_TIME - STARSHIP_START_TIME))
ARGS+=( --cmd-duration="${STARSHIP_DURATION}")
STARSHIP_START_TIME=""
fi
PS1="$(::STARSHIP:: prompt "${ARGS[@]}")"
if [[ ${BLE_ATTACHED-} ]]; then
local nlns=${PS1//[!$'\n']}
bleopt prompt_rps1="$nlns$(::STARSHIP:: prompt --right "${ARGS[@]}")"
fi
STARSHIP_PREEXEC_READY=true }
if [[ ${BLE_VERSION-} && _ble_version -ge 400 ]]; then
blehook PREEXEC!='starship_preexec "$_"'
blehook PRECMD!='starship_precmd'
elif [[ -n "${bash_preexec_imported:-}" || -n "${__bp_imported:-}" || -n "${preexec_functions-}" || -n "${precmd_functions-}" ]]; then
starship_preexec_all(){ starship_preexec "$_"; }
preexec_functions+=(starship_preexec_all)
precmd_functions+=(starship_precmd)
else
if [[ -n "${BASH_VERSION-}" ]] && [[ "${BASH_VERSINFO[0]}" -gt 4 || ( "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 ) ]]; then
starship_preexec_ps0() {
::STARSHIP:: time
}
PS0='${STARSHIP_START_TIME:$((STARSHIP_START_TIME="$(starship_preexec_ps0)",STARSHIP_PREEXEC_READY=0,0)):0}'"${PS0-}"
else
eval "STARSHIP_DEBUG_TRAP=($(trap -p DEBUG))"
STARSHIP_DEBUG_TRAP=("${STARSHIP_DEBUG_TRAP[2]}")
if [[ -z "$STARSHIP_DEBUG_TRAP" ]]; then
trap 'starship_preexec "$_"' DEBUG
elif [[ "$STARSHIP_DEBUG_TRAP" != 'starship_preexec "$_"' && "$STARSHIP_DEBUG_TRAP" != 'starship_preexec_all "$_"' ]]; then
starship_preexec_all() {
local PREV_LAST_ARG=$1 ; eval -- "$STARSHIP_DEBUG_TRAP"; starship_preexec; : "$PREV_LAST_ARG";
}
trap 'starship_preexec_all "$_"' DEBUG
fi
fi
if [[ -z "${PROMPT_COMMAND-}" ]]; then
PROMPT_COMMAND="starship_precmd"
elif [[ "$PROMPT_COMMAND" != *"starship_precmd"* ]]; then
STARSHIP_PROMPT_COMMAND="$PROMPT_COMMAND"
PROMPT_COMMAND="starship_precmd"
fi
fi
shopt -s checkwinsize
STARSHIP_START_TIME=$(::STARSHIP:: time)
export STARSHIP_SHELL="bash"
STARSHIP_SESSION_KEY="$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM"; STARSHIP_SESSION_KEY="${STARSHIP_SESSION_KEY}0000000000000000" export STARSHIP_SESSION_KEY=${STARSHIP_SESSION_KEY:0:16};
PS2="$(::STARSHIP:: prompt --continuation)"