117 lines
3.2 KiB
Bash
Executable File
117 lines
3.2 KiB
Bash
Executable File
# Binary, config template, and systemd artifact helpers for the installer.
|
|
|
|
resolve_build_target() {
|
|
if [[ -d "${REPO_DIR}/cmd/ananke" ]]; then
|
|
echo "./cmd/ananke"
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
install_config_template() {
|
|
local template="$1"
|
|
local dest="$2"
|
|
local src legacy
|
|
local -a modern_candidates=()
|
|
local -a legacy_candidates=()
|
|
|
|
case "${template}" in
|
|
coordinator)
|
|
modern_candidates=("configs/ananke.coordinator.yaml" "configs/ananke.titan-db.yaml")
|
|
legacy_candidates=("configs/hecate.titan-db.yaml")
|
|
;;
|
|
peer)
|
|
modern_candidates=("configs/ananke.peer.yaml" "configs/ananke.tethys.yaml")
|
|
legacy_candidates=("configs/hecate.tethys.yaml")
|
|
;;
|
|
example)
|
|
modern_candidates=("configs/ananke.example.yaml")
|
|
legacy_candidates=("configs/hecate.example.yaml")
|
|
;;
|
|
*)
|
|
echo "[install] unknown config template key: ${template}" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
for src in "${modern_candidates[@]}"; do
|
|
if [[ -f "${src}" ]]; then
|
|
install -m 0640 "${src}" "${dest}"
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
for legacy in "${legacy_candidates[@]}"; do
|
|
if [[ -f "${legacy}" ]]; then
|
|
src="$(mktemp)"
|
|
legacy_path_rewrite "${legacy}" "${src}"
|
|
install -m 0640 "${src}" "${dest}"
|
|
rm -f "${src}"
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
echo "[install] missing config template sources for '${template}'. modern=[${modern_candidates[*]}] legacy=[${legacy_candidates[*]}]" >&2
|
|
return 1
|
|
}
|
|
|
|
install_systemd_units() {
|
|
local tmp
|
|
|
|
while IFS='|' read -r target_name modern_name legacy_name; do
|
|
local modern_src="deploy/systemd/${modern_name}"
|
|
local legacy_src="deploy/systemd/${legacy_name}"
|
|
local target="${SYSTEMD_DIR}/${target_name}"
|
|
|
|
if [[ -f "${modern_src}" ]]; then
|
|
install -m 0644 "${modern_src}" "${target}"
|
|
continue
|
|
fi
|
|
|
|
if [[ -f "${legacy_src}" ]]; then
|
|
tmp="$(mktemp)"
|
|
legacy_path_rewrite "${legacy_src}" "${tmp}"
|
|
install -m 0644 "${tmp}" "${target}"
|
|
rm -f "${tmp}"
|
|
continue
|
|
fi
|
|
|
|
echo "[install] missing both modern and legacy systemd unit sources for ${target_name}" >&2
|
|
return 1
|
|
done <<'EOF_UNITS'
|
|
ananke.service|ananke.service|hecate.service
|
|
ananke-bootstrap.service|ananke-bootstrap.service|hecate-bootstrap.service
|
|
ananke-update.service|ananke-update.service|hecate-update.service
|
|
ananke-update.timer|ananke-update.timer|hecate-update.timer
|
|
EOF_UNITS
|
|
}
|
|
|
|
install_self_update_script() {
|
|
local modern_src="scripts/ananke-self-update.sh"
|
|
local legacy_src="scripts/hecate-self-update.sh"
|
|
local target="${LIB_DIR}/ananke-self-update.sh"
|
|
local tmp
|
|
|
|
if [[ -f "${modern_src}" ]]; then
|
|
install -m 0755 "${modern_src}" "${target}"
|
|
return 0
|
|
fi
|
|
|
|
if [[ -f "${legacy_src}" ]]; then
|
|
tmp="$(mktemp)"
|
|
legacy_path_rewrite "${legacy_src}" "${tmp}"
|
|
sed -Ei \
|
|
-e 's/HECATE_/ANANKE_/g' \
|
|
-e 's/hecate-self-update/ananke-self-update/g' \
|
|
-e 's#/opt/hecate#/opt/ananke#g' \
|
|
-e 's#bstein/hecate\.git#bstein/ananke.git#g' \
|
|
"${tmp}"
|
|
install -m 0755 "${tmp}" "${target}"
|
|
rm -f "${tmp}"
|
|
return 0
|
|
fi
|
|
|
|
echo "[install] missing both modern and legacy self-update scripts." >&2
|
|
return 1
|
|
}
|