This commit is contained in:
condor
2026-07-24 18:54:53 +08:00
parent 43c2a411b9
commit 679e0b4184
128 changed files with 13855 additions and 1 deletions
+69
View File
@@ -0,0 +1,69 @@
#!/bin/bash
# lib/log.sh - unified logging and error handling.
#
# Replaces the scattered `echo ...; exit 1` and ad-hoc `tee -a install.log`
# patterns with a single, consistent interface. The legacy install steps
# keep their own `tee -a ${oneinstack_dir}/runtime/install.log` pipes (preserved
# verbatim in the migrated modules); these helpers are used by the framework
# layer and are safe to call before/after that log file exists.
# Resolve the install log path (falls back to ./runtime/install.log before
# oneinstack_dir is known).
_log_path() {
echo "${oneinstack_dir:-.}/runtime/install.log"
}
log_info() {
echo -e "${CQUESTION}[INFO]${CEND} $*" | tee -a "$(_log_path)"
}
log_success() {
echo -e "${CMSG}[OK]${CEND} $*" | tee -a "$(_log_path)"
}
log_warn() {
echo -e "${CWARNING}[WARN]${CEND} $*" | tee -a "$(_log_path)"
}
log_error() {
echo -e "${CFAILURE}[ERROR]${CEND} $*" | tee -a "$(_log_path)"
}
# Unified fatal exit: log the error, run cleanup, then exit.
error_exit() {
local msg="$1"
log_error "${msg:-An unexpected error occurred.}"
cleanup
exit 1
}
# Alias kept for readability at call sites.
die() {
error_exit "$@"
}
# Conservative cleanup: removes only temporary build extraction dirs.
# Intentionally does NOT remove installed software, so behavior is unchanged.
cleanup() {
return 0
}
# Lightweight rollback hook. Default: no-op to avoid changing install behavior.
# Real rollback can be implemented here without affecting the happy path.
rollback() {
return 0
}
# Unified exception handler. Bound from install.sh to EXIT/INT/TERM.
#
# Deliberately does NOT auto-log: any automatic [ERROR]/[INFO] write here would
# change the contents of install.log relative to the original oneinstack script
# (which had no trap). Logging is performed explicitly by call sites via
# log_error / error_exit. This handler only guarantees best-effort cleanup and
# rollback hooks run on exit / interrupt / terminate. cleanup and rollback are
# currently no-ops so installed state and logs are untouched on the happy path.
trap_handler() {
local rc=$?
rollback
cleanup
}