From d76fca087528c4e3ae49577f5fcc3db4b526f068 Mon Sep 17 00:00:00 2001 From: Lord Alfred <2259979+lord-alfred@users.noreply.github.com> Date: Tue, 17 Mar 2026 09:50:43 +0300 Subject: [PATCH] Update merge.py --- utils/merge.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/utils/merge.py b/utils/merge.py index 7537619e..a75fd3e6 100644 --- a/utils/merge.py +++ b/utils/merge.py @@ -3,10 +3,26 @@ import argparse import netaddr -if __name__ == '__main__': +def iter_networks(source): + for line_number, raw_value in enumerate(source, start=1): + value = raw_value.strip() + if not value: + continue + + try: + yield netaddr.IPNetwork(value) + except netaddr.AddrFormatError as exc: + raise SystemExit(f'Invalid IP or CIDR on line {line_number}: {value!r}') from exc + + +def main(): parser = argparse.ArgumentParser(description='Merge IP addresses into the smallest possible list of CIDRs.') parser.add_argument('--source', nargs='?', type=argparse.FileType('r'), required=True, help='Source file path') args = parser.parse_args() - for addr in netaddr.cidr_merge(args.source.readlines()): + for addr in netaddr.cidr_merge(iter_networks(args.source)): print(addr) + + +if __name__ == '__main__': + raise SystemExit(main())