fix: implement logging function and replace echo statements with log calls

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Jakub Dorfman 2026-04-27 12:35:04 +02:00
parent a34eac4235
commit a48cca2108

View file

@ -58,6 +58,12 @@ fail() {
exit 1 exit 1
} }
log() {
local level="${1:-info}"
local msg="${2:-}"
echo "${msg}" | systemd-cat -t panelctl -p "${level}" 2>/dev/null || true
}
ensure_base_dirs() { ensure_base_dirs() {
mkdir -p "${STACKS_DIR}" "${VOLUMES_DIR}" "${ROUTES_DIR}" "${APPS_DIR}" "${BACKUPS_DIR}" mkdir -p "${STACKS_DIR}" "${VOLUMES_DIR}" "${ROUTES_DIR}" "${APPS_DIR}" "${BACKUPS_DIR}"
} }
@ -275,7 +281,7 @@ cmd_init() {
write_manifest "${name}" "${domains}" "${port}" "${auth}" write_manifest "${name}" "${domains}" "${port}" "${auth}"
cmd_render_route "${name}" cmd_render_route "${name}"
echo "initialized app '${name}'" log info "initialized app '${name}'"
} }
cmd_render_route() { cmd_render_route() {
@ -326,13 +332,13 @@ cmd_render_route() {
} >>"${tmp}" } >>"${tmp}"
install -m 0664 -o reudy -g panelroutes "${tmp}" "${route_file}" install -m 0664 -o reudy -g panelroutes "${tmp}" "${route_file}"
echo "rendered route ${route_file}" log info "rendered route ${route_file}"
} }
maybe_reload_caddy() { maybe_reload_caddy() {
# Try Caddy admin API first (no root required) # Try Caddy admin API first (no root required)
if curl -sf -X POST http://localhost:2019/config/ >/dev/null 2>&1; then if curl -sf -X POST http://localhost:2019/config/ >/dev/null 2>&1; then
echo "reloaded caddy via admin API" log info "reloaded caddy via admin API"
return return
fi fi
@ -345,52 +351,32 @@ maybe_reload_caddy() {
# Fall back to systemctl (sudo if needed) # Fall back to systemctl (sudo if needed)
if [[ "${EUID}" -eq 0 ]]; then if [[ "${EUID}" -eq 0 ]]; then
systemctl reload caddy && echo "reloaded caddy" systemctl reload caddy && log info "reloaded caddy"
elif sudo -n /run/current-system/sw/bin/systemctl reload caddy 2>/dev/null; then elif sudo -n /run/current-system/sw/bin/systemctl reload caddy 2>/dev/null; then
echo "reloaded caddy via sudo" log info "reloaded caddy via sudo"
else else
echo "caddy reload requires root; run: sudo systemctl reload caddy" log warning "caddy reload requires root; run: sudo systemctl reload caddy"
fi fi
} }
# maybe_reload_caddy() {
# if [[ -x /run/current-system/sw/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
# /run/current-system/sw/bin/caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile || echo "warning: caddy validation failed" >&2
# fi
# if [[ "${EUID}" -eq 0 ]]; then
# systemctl reload caddy
# echo "reloaded caddy"
# return
# fi
# if command -v sudo >/dev/null 2>&1 && sudo -n true >/dev/null 2>&1; then
# sudo -n /run/current-system/sw/bin/systemctl reload caddy
# echo "reloaded caddy via sudo"
# return
# fi
# echo "caddy reload requires root; run: sudo systemctl reload caddy"
# }
cmd_deploy() { cmd_deploy() {
local name="$1" local name="$1"
validate_name "${name}" validate_name "${name}"
load_app "${name}" load_app "${name}"
echo "Starting deployment for app '${name}'" | systemd-cat -t panelctl -p info 2>/dev/null || true log info "Starting deployment for app '${name}'"
cmd_render_route "${name}" cmd_render_route "${name}"
if ! run_compose -f "${APP_COMPOSE_FILE}" up -d 2>&1 | systemd-cat -t panelctl -p info 2>/dev/null; then if ! run_compose -f "${APP_COMPOSE_FILE}" up -d 2>&1 | systemd-cat -t panelctl -p info 2>/dev/null; then
echo "Deployment failed for app '${name}'" | systemd-cat -t panelctl -p err 2>/dev/null || true log err "Deployment failed for app '${name}'"
fail "compose up failed" fail "compose up failed"
fi fi
maybe_reload_caddy maybe_reload_caddy
echo "Successfully deployed app '${name}'" | systemd-cat -t panelctl -p info 2>/dev/null || true log info "Successfully deployed app '${name}'"
echo "deployed app '${name}'" log info "deployed app '${name}'"
} }
cmd_restart() { cmd_restart() {
@ -398,7 +384,7 @@ cmd_restart() {
validate_name "${name}" validate_name "${name}"
load_app "${name}" load_app "${name}"
echo "Restarting app '${name}'" | systemd-cat -t panelctl -p info 2>/dev/null || true log info "Restarting app '${name}'"
run_compose -f "${APP_COMPOSE_FILE}" down || fail "compose down failed" run_compose -f "${APP_COMPOSE_FILE}" down || fail "compose down failed"
@ -406,7 +392,7 @@ cmd_restart() {
fail "compose up failed during restart" fail "compose up failed during restart"
fi fi
echo "restarted app '${name}'" log info "restarted app '${name}'"
} }
cmd_stop() { cmd_stop() {
@ -415,7 +401,7 @@ cmd_stop() {
load_app "${name}" load_app "${name}"
run_compose -f "${APP_COMPOSE_FILE}" down || fail "compose down failed" run_compose -f "${APP_COMPOSE_FILE}" down || fail "compose down failed"
echo "stopped app '${name}'" log info "stopped app '${name}'"
} }
cmd_status() { cmd_status() {
@ -425,7 +411,7 @@ cmd_status() {
run_compose -f "${APP_COMPOSE_FILE}" ps --format json 2>/dev/null || \ run_compose -f "${APP_COMPOSE_FILE}" ps --format json 2>/dev/null || \
run_compose -f "${APP_COMPOSE_FILE}" ps 2>/dev/null || \ run_compose -f "${APP_COMPOSE_FILE}" ps 2>/dev/null || \
echo "no containers running" log info "no containers running"
} }
cmd_logs() { cmd_logs() {
@ -447,7 +433,7 @@ cmd_logs() {
esac esac
done done
run_compose -f "${APP_COMPOSE_FILE}" logs --tail "${tail_lines}" 2>&1 || echo "no logs available" run_compose -f "${APP_COMPOSE_FILE}" logs --tail "${tail_lines}" 2>&1 || log info "no logs available"
} }
cmd_validate_compose() { cmd_validate_compose() {
@ -456,7 +442,7 @@ cmd_validate_compose() {
load_app "${name}" load_app "${name}"
if run_compose -f "${APP_COMPOSE_FILE}" config >/dev/null 2>&1; then if run_compose -f "${APP_COMPOSE_FILE}" config >/dev/null 2>&1; then
echo "compose file is valid" log info "compose file is valid"
else else
local output local output
output="$(run_compose -f "${APP_COMPOSE_FILE}" config 2>&1 || true)" output="$(run_compose -f "${APP_COMPOSE_FILE}" config 2>&1 || true)"
@ -490,7 +476,7 @@ cmd_remove() {
fi fi
maybe_reload_caddy maybe_reload_caddy
echo "removed app '${name}'" log info "removed app '${name}'"
} }
cmd_backup() { cmd_backup() {
@ -512,7 +498,7 @@ cmd_backup() {
local was_running=false local was_running=false
if run_compose -f "${APP_COMPOSE_FILE}" ps --format json 2>/dev/null | grep -q '"running"' 2>/dev/null; then if run_compose -f "${APP_COMPOSE_FILE}" ps --format json 2>/dev/null | grep -q '"running"' 2>/dev/null; then
was_running=true was_running=true
echo "stopping containers for consistent backup..." log info "stopping containers for consistent backup..."
run_compose -f "${APP_COMPOSE_FILE}" down 2>/dev/null || true run_compose -f "${APP_COMPOSE_FILE}" down 2>/dev/null || true
fi fi
@ -527,13 +513,13 @@ cmd_backup() {
# Restart if it was running # Restart if it was running
if [[ "${was_running}" == "true" ]]; then if [[ "${was_running}" == "true" ]]; then
echo "restarting containers after backup..." log info "restarting containers after backup..."
run_compose -f "${APP_COMPOSE_FILE}" up -d 2>/dev/null || true run_compose -f "${APP_COMPOSE_FILE}" up -d 2>/dev/null || true
fi fi
local size local size
size="$(du -h "${backup_file}" | cut -f1)" size="$(du -h "${backup_file}" | cut -f1)"
echo "backup created: ${backup_file} (${size})" log info "backup created: ${backup_file} (${size})"
} }
cmd_list_backups() { cmd_list_backups() {
@ -554,7 +540,7 @@ cmd_list_backups() {
done done
if [[ "${found}" -eq 0 ]]; then if [[ "${found}" -eq 0 ]]; then
echo "no backups found for '${name}'" log info "no backups found for '${name}'"
fi fi
} }
@ -582,7 +568,7 @@ cmd_restore() {
volume_dir="$(app_volume_dir "${name}")" volume_dir="$(app_volume_dir "${name}")"
# Stop containers before restore # Stop containers before restore
echo "stopping containers for restore..." log info "stopping containers for restore..."
run_compose -f "${APP_COMPOSE_FILE}" down 2>/dev/null || true run_compose -f "${APP_COMPOSE_FILE}" down 2>/dev/null || true
# Clear existing volume data and extract backup # Clear existing volume data and extract backup
@ -590,8 +576,8 @@ cmd_restore() {
mkdir -p "${volume_dir}" mkdir -p "${volume_dir}"
(cd "${volume_dir}" && unzip -o "${norm_path}") || fail "unzip failed" (cd "${volume_dir}" && unzip -o "${norm_path}") || fail "unzip failed"
echo "restored '${name}' from $(basename "${norm_path}")" log info "restored '${name}' from $(basename "${norm_path}")"
echo "run 'panelctl deploy ${name}' to start the app" log info "run 'panelctl deploy ${name}' to start the app'"
} }
cmd_list() { cmd_list() {
@ -607,7 +593,7 @@ cmd_list() {
done done
if [[ "${found}" -eq 0 ]]; then if [[ "${found}" -eq 0 ]]; then
echo "no apps found" log info "no apps found"
fi fi
} }