more index cleanups to optimise space
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-02-08 15:40:42 +11:00
parent a993aedf79
commit c66679a71f
13 changed files with 590 additions and 61 deletions

View File

@@ -1,8 +1,108 @@
#!/bin/bash
TARGET_CFG="/etc/dtms/vctp.yml"
SOURCE_CFG="${TARGET_CFG}.rpmnew"
extract_setting_key_lines() {
local file="$1"
awk '
/^settings:[[:space:]]*$/ { in_settings = 1; next }
in_settings && /^[^[:space:]]/ { in_settings = 0 }
in_settings && $0 ~ /^ [A-Za-z0-9_]+:[[:space:]]*/ {
key = $1
sub(":", "", key)
print key "\t" $0
}
' "$file"
}
merge_missing_settings_from_rpmnew() {
local target="$1"
local source="$2"
if [ ! -f "$target" ] || [ ! -f "$source" ]; then
return 0
fi
local src_pairs target_pairs missing_lines merged_file
src_pairs="$(mktemp /tmp/vctp-postinstall-src-XXXXXX)" || return 0
target_pairs="$(mktemp /tmp/vctp-postinstall-target-XXXXXX)" || { rm -f "$src_pairs"; return 0; }
missing_lines="$(mktemp /tmp/vctp-postinstall-missing-XXXXXX)" || {
rm -f "$src_pairs" "$target_pairs"
return 0
}
merged_file="$(mktemp /tmp/vctp-postinstall-merged-XXXXXX)" || {
rm -f "$src_pairs" "$target_pairs" "$missing_lines"
return 0
}
extract_setting_key_lines "$source" > "$src_pairs"
extract_setting_key_lines "$target" > "$target_pairs"
declare -A existing_keys=()
while IFS=$'\t' read -r key _; do
[ -n "$key" ] || continue
existing_keys["$key"]=1
done < "$target_pairs"
local added=0
: > "$missing_lines"
while IFS=$'\t' read -r key line; do
[ -n "$key" ] || continue
if [ -z "${existing_keys[$key]+x}" ]; then
if [ "$added" -eq 0 ]; then
echo " # Added automatically by RPM postinstall from vctp.yml.rpmnew defaults." >> "$missing_lines"
fi
echo "$line" >> "$missing_lines"
existing_keys["$key"]=1
added=$((added + 1))
fi
done < "$src_pairs"
if [ "$added" -gt 0 ]; then
awk -v missing_file="$missing_lines" '
function print_missing( line) {
while ((getline line < missing_file) > 0) {
print line
}
close(missing_file)
}
BEGIN { in_settings = 0; inserted = 0 }
{
if ($0 ~ /^settings:[[:space:]]*$/) {
in_settings = 1
print
next
}
if (in_settings && $0 ~ /^[^[:space:]]/) {
if (!inserted) {
print_missing()
inserted = 1
}
in_settings = 0
}
print
}
END {
if (in_settings && !inserted) {
print_missing()
}
}
' "$target" > "$merged_file" && cat "$merged_file" > "$target"
if [ "$?" -eq 0 ]; then
echo "vCTP postinstall: added ${added} missing settings key(s) to ${target}"
fi
fi
rm -f "$src_pairs" "$target_pairs" "$missing_lines" "$merged_file"
}
merge_missing_settings_from_rpmnew "$TARGET_CFG" "$SOURCE_CFG" || :
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload || :
if [ "$1" -eq 1 ]; then
if [ "${1:-0}" -eq 1 ]; then
systemctl enable --now vctp.service || :
else
systemctl try-restart vctp.service || :