1
0

fix: make log viewer optional and document runtime dependencies

This commit is contained in:
2026-04-26 00:08:02 +02:00
parent 2ed34b97be
commit f3c649341a
4 changed files with 57 additions and 11 deletions
+39 -6
View File
@@ -10,11 +10,38 @@ showHelp() {
}
checkDependencies() {
command -v ssh >/dev/null 2>&1 || { echo "Error: ssh is required"; exit 1; }
command -v whiptail >/dev/null 2>&1 || { echo "Error: whiptail is required"; exit 1; }
command -v nano >/dev/null 2>&1 || { echo "Error: nano is required"; exit 1; }
command -v sed >/dev/null 2>&1 || { echo "Error: sed is required"; exit 1; }
command -v tee >/dev/null 2>&1 || { echo "Error: tee is required"; exit 1; }
local -a REQUIRED_CMDS=(ssh whiptail sed tee rm touch)
local -a MISSING_CMDS=()
local CMD
for CMD in "${REQUIRED_CMDS[@]}"; do
if ! command -v "${CMD}" >/dev/null 2>&1; then
MISSING_CMDS+=("${CMD}")
fi
done
if [ ${#MISSING_CMDS[@]} -gt 0 ]; then
echo "Error: missing required dependencies: ${MISSING_CMDS[*]}"
exit 1
fi
}
resolveLogViewer() {
if [ -n "${EDITOR}" ] && command -v "${EDITOR}" >/dev/null 2>&1; then
LOGVIEWER="${EDITOR}"
return
fi
local -a CANDIDATES=(nano vi less)
local CANDIDATE
for CANDIDATE in "${CANDIDATES[@]}"; do
if command -v "${CANDIDATE}" >/dev/null 2>&1; then
LOGVIEWER="${CANDIDATE}"
return
fi
done
LOGVIEWER=""
}
pressAnyKey(){
@@ -88,7 +115,11 @@ selectNodes(){
sed -i "1s/^/${RESULT//\//\\\/}\n\n\n\n/" "${LOGFILENAME}"
sed -i "1s/^/---------\n\n/" "${LOGFILENAME}"
sed -i "1s/^/Results :\n/" "${LOGFILENAME}"
nano "${LOGFILENAME}"
if [ -n "${LOGVIEWER}" ]; then
"${LOGVIEWER}" "${LOGFILENAME}"
else
echo "Warning: no log viewer found, showing log path instead: ${LOGFILENAME}"
fi
rm -i "${LOGFILENAME}"
echo ""
echo "Results :"
@@ -235,6 +266,7 @@ declare -i YES=0
declare -i FULL=0
declare CONFIGFILENAME="${HOME}/.config/netupgrade/index.cfg"
declare LOGFILENAME="${HOME}/netupgrade.log"
declare LOGVIEWER=""
declare -a NODES=()
while [[ ${#} -gt 0 ]]; do
@@ -247,6 +279,7 @@ while [[ ${#} -gt 0 ]]; do
done
checkDependencies
resolveLogViewer
loadConfig
selectNodes