fix update_yaml_fallback

This commit is contained in:
scriptos 2025-10-27 19:37:57 +01:00
parent 2daaadc3b3
commit 7cbd5cd5be

View File

@ -139,36 +139,45 @@ update_yaml_fallback() {
local tmp
tmp="$(mktemp)"
awk -v newcidr="$cidr" '
BEGIN{ in_rtc=0; in_ips=0; in_includes=0; injected=0 }
BEGIN{ in_rtc=0; in_ips=0; ips_indent=""; printed_ips=0 }
function print_ips_block() {
if (!printed_ips) {
print " ips:"
print " includes:"
print " - " newcidr
printed_ips=1
}
}
{
line=$0
if ($0 ~ /^[[:space:]]*rtc:[[:space:]]*$/) { in_rtc=1; in_ips=0; in_includes=0 }
else if (in_rtc && $0 ~ /^[[:space:]]*[[:alnum:]_]+:[[:space:]]*$/ && $0 !~ /^[[:space:]]*ips:/) {
if (!in_ips && !in_includes && !injected) {
print " ips:"
print " includes:"
print " - " newcidr
injected=1
if ($0 ~ /^[[:space:]]*rtc:[[:space:]]*$/) { in_rtc=1; in_ips=0; ips_indent=""; print; next }
if (in_rtc) {
if (in_ips) {
if (ips_indent=="" ) { next }
if ($0 ~ "^" ips_indent "[^[:space:]]") { next }
in_ips=0
print_ips_block()
}
}
if (in_rtc && $0 ~ /^[[:space:]]*ips:[[:space:]]*$/) { in_ips=1; in_includes=0 }
if (in_ips && $0 ~ /^[[:space:]]*includes:[[:space:]]*$/) { in_includes=1; next }
if (in_includes) {
if ($0 ~ /^[[:space:]]*-[[:space:]]*[^[:space:]]+/) {
if ($0 ~ /^[[:space:]]{2}ips:[[:space:]]*$/) {
in_ips=1
match($0,/^([[:space:]]*)ips:/,m)
ips_indent=m[1]" "
next
} else {
if (!injected) {
print " - " newcidr
injected=1
}
in_includes=0
in_ips=($0 ~ /^[[:space:]]*ips:/)?1:0
}
if ($0 ~ /^[[:space:]]{2}[[:alnum:]_]+:[[:space:]]*$/) {
if (!printed_ips) { print_ips_block() }
}
if ($0 ~ /^[[:alnum:]_]+:[[:space:]]*$/) {
if (!printed_ips && in_rtc) { print_ips_block() }
in_rtc=0
}
print line
next
}
print line
}
END{
if (in_rtc && !injected) {
if (in_rtc && !printed_ips) {
print " ips:"
print " includes:"
print " - " newcidr