Update merge.py

This commit is contained in:
Lord Alfred
2026-03-17 09:50:43 +03:00
committed by GitHub
parent 864ef2c8c8
commit d76fca0875

View File

@@ -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())