fix update_yaml_fallback
This commit is contained in:
parent
2daaadc3b3
commit
7cbd5cd5be
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user