From 8acce6d76a67765798dc2f0deedaf667aabec587 Mon Sep 17 00:00:00 2001
From: XANTRONIX Industrial <xan@xantronix.com>
Date: Tue, 25 Feb 2025 14:48:59 -0500
Subject: [PATCH] Add --quiet, --dry-run flags to xmet-afos-ingest

---
 bin/xmet-afos-ingest | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/bin/xmet-afos-ingest b/bin/xmet-afos-ingest
index f5462a9..24f7a05 100755
--- a/bin/xmet-afos-ingest
+++ b/bin/xmet-afos-ingest
@@ -1,6 +1,6 @@
 #! /usr/bin/env python3
 
-import sys
+import argparse
 
 from xmet.db   import Database
 from xmet.afos import AFOSMessageParser
@@ -27,12 +27,24 @@ def each_chunk(fh, sep: str):
             else:
                 yield part.strip()
 
-db = Database.connect(sys.argv[1])
+parser = argparse.ArgumentParser(
+    description = 'Ingest National Weather Service text bulletin products'
+)
+
+parser.add_argument('--quiet',   action='store_true', help='Suppress output')
+parser.add_argument('--dry-run', action='store_true', help='Do not actually ingest products')
+
+parser.add_argument('db',             help='XMET SQLite3 database')
+parser.add_argument('afos-text-file', help='AFOS text bulletin product file')
+
+args = parser.parse_args()
+
+db = Database.connect(args.db)
 db.execute('begin transaction')
 
 parser = AFOSMessageParser()
 
-for path in sys.argv[2:]:
+for path in getattr(args, 'afos-text-file'):
     with open(path, 'r') as fh:
         for data in each_chunk(fh, '\x01'):
             if len(data) == 0:
@@ -41,7 +53,11 @@ for path in sys.argv[2:]:
             try:
                 message = parser.parse(data)
 
-                db.add(message)
+                if not args.quiet:
+                    print(f"Ingesting AFOS file {path}")
+
+                if not args.dry_run:
+                    db.add(message)
             except:
                 pass