From c54f184ff70829b38d7213839192a3e6fdebfc14 Mon Sep 17 00:00:00 2001
From: "E. Joshua Rigler" <erigler@usgs.gov>
Date: Sun, 2 Mar 2025 15:11:18 -0700
Subject: [PATCH] Add sncl_mode and scale_factor options to controller:

These will be passed to IO factories if those factories accept them. As of this commit, only Edge and MiniSeed factories honor these options. Others should be updated to accept these, and apply them in a similar manner.
---
 geomagio/Controller.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/geomagio/Controller.py b/geomagio/Controller.py
index 7895fc54..6297df43 100644
--- a/geomagio/Controller.py
+++ b/geomagio/Controller.py
@@ -491,6 +491,8 @@ def get_input_factory(args):
     # standard arguments
     input_factory_args = {}
     input_factory_args["interval"] = args.input_interval or args.interval
+    input_factory_args["scale_factor"] = args.input_scale_factor or args.scale_factor
+    input_factory_args["sncl_mode"] = args.input_sncl_mode or args.sncl_mode
     input_factory_args["observatory"] = args.observatory
     input_factory_args["type"] = args.type
     input_type = args.input
@@ -600,6 +602,8 @@ def get_output_factory(args):
     # standard arguments
     output_factory_args = {}
     output_factory_args["interval"] = args.output_interval or args.interval
+    output_factory_args["scale_factor"] = args.output_scale_factor or args.scale_factor
+    output_factory_args["sncl_mode"] = args.ouput_sncl_mode or args.sncl_mode
     output_factory_args["observatory"] = args.output_observatory
     output_factory_args["type"] = args.type
     # stream/url arguments
@@ -878,6 +882,17 @@ def parse_args(args):
         metavar="PORT",
         type=int,
     )
+    input_group.add_argument(
+        "--input-scale-factor",
+        default=None,
+        help="Override default factory scale_factor (divide on read; multiply on write)",
+    )
+    input_group.add_argument(
+        "--input-sncl-mode",
+        default=None,
+        help="Override default factory sncl_mode",
+        choices=["geomag", "legacy", "fdsn"],
+    )
     input_group.add_argument(
         "--input-stdin",
         action="store_true",
@@ -969,6 +984,17 @@ def parse_args(args):
         metavar=("FROM", "TO"),
         nargs=2,
     )
+    input_group.add_argument(
+        "--scale-factor",
+        default=None,
+        help="Override default factory scale_factor (divide on read; multiply on write)",
+    )
+    input_group.add_argument(
+        "--sncl-mode",
+        default=None,
+        help="Override default factory sncl_mode",
+        choices=["geomag", "legacy", "fdsn"],
+    )
     input_group.add_argument(
         "--type",
         default="variation",
@@ -1102,6 +1128,17 @@ def parse_args(args):
         metavar="PORT",
         type=int,
     )
+    output_group.add_argument(
+        "--output-scale-factor",
+        default=None,
+        help="Override default factory scale_factor (divide on read; multiply on write)",
+    )
+    output_group.add_argument(
+        "--output-sncl-mode",
+        default=None,
+        help="Override default factory sncl_mode ()",
+        choices=["geomag", "legacy", "fdsn"],
+    )
     output_group.add_argument(
         "--output-stdout",
         action="store_true",
-- 
GitLab