init
This commit is contained in:
+69
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user