fix: implement logging function and replace echo statements with log calls
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
parent
a34eac4235
commit
a48cca2108
1 changed files with 31 additions and 45 deletions
76
panelctl.sh
76
panelctl.sh
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue