feat: panic backtraces
This commit is contained in:
+5
-2
@@ -4,7 +4,7 @@ std::bootstrap() {
|
|||||||
|
|
||||||
declare -g STD_VERSION=$1
|
declare -g STD_VERSION=$1
|
||||||
}
|
}
|
||||||
std::bootstrap 0.1.2
|
std::bootstrap 0.1.3
|
||||||
|
|
||||||
INTERPRETER=$(ps -p $$ | awk '$1 != "PID" {print $(NF)}')
|
INTERPRETER=$(ps -p $$ | awk '$1 != "PID" {print $(NF)}')
|
||||||
: "${INTERPRETER:=bash}"
|
: "${INTERPRETER:=bash}"
|
||||||
@@ -134,8 +134,11 @@ std::mod::source() {
|
|||||||
elif ! [[ "$joined_path" == *.sh ]]; then
|
elif ! [[ "$joined_path" == *.sh ]]; then
|
||||||
std::mod::source "$module_name" "$import_path.sh"
|
std::mod::source "$module_name" "$import_path.sh"
|
||||||
else
|
else
|
||||||
echo "$joined_path path not found"
|
if command -v std::panic &>/dev/null; then
|
||||||
std::panic "$joined_path path not found"
|
std::panic "$joined_path path not found"
|
||||||
|
else
|
||||||
|
echo "$joined_path path not found"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# condition
|
# condition
|
||||||
|
|||||||
@@ -6,6 +6,20 @@ std::wprintln() {
|
|||||||
printf "\033[1;33m%s\033[0m\n" "$*" >&2
|
printf "\033[1;33m%s\033[0m\n" "$*" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::backtrace() {
|
||||||
|
if ! std::interpreter::is-bash; then
|
||||||
|
std::eprintln "Backtraces are only available for bash"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
std::eprintln
|
||||||
|
std::eprintln $'\033[4m'"Backtrace:"
|
||||||
|
|
||||||
|
for i in "${!FUNCNAME[@]}"; do
|
||||||
|
std::eprintln " ${FUNCNAME[$i]} called at ${BASH_SOURCE[$i]}:${BASH_LINENO[$i - 1]}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
std::panic() {
|
std::panic() {
|
||||||
if [ -n "${1:-}" ]; then
|
if [ -n "${1:-}" ]; then
|
||||||
local arg1=$1
|
local arg1=$1
|
||||||
@@ -15,6 +29,8 @@ std::panic() {
|
|||||||
std::eprintln "code panicked"
|
std::eprintln "code panicked"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -z "${SH_BACKTRACE:-}" ] || std::backtrace
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user