Newer
Older
input_group.add_argument(
"--convert-voltbin",
nargs="*",
default=None,
metavar="CHANNEL",
help="""
Convert channels from bins/volts to nT.
Example: "
--inchannels U_Bin U_Volt
--interval tenhertz
--type variation
--convert-voltbin U
--outchannels U
"
# Output group
output_group = parser.add_argument_group("Output", "How data is written.")
output_type_group = output_group.add_mutually_exclusive_group(required=True)
# output arguments
output_type_group.add_argument(
"--output",
choices=(
"binlog",
"edge",
"iaga2002",
"imfjson",
"miniseed",
"pcdcp",
"plot",
"temperature",
"vbf",
),
# TODO: set default to 'iaga2002'
help="Output format",
)
output_group.add_argument(
"--outchannels",
nargs="*",
default=None,
help="Defaults to --inchannels",
metavar="CHANNEL",
)
output_group.add_argument(
"--output-file", help="Write to specified file", metavar="FILE"
)
output_group.add_argument(
"--output-host",
default="edgecwb.usgs.gov",
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
help="Write to specified host",
metavar="HOST",
)
output_group.add_argument(
"--output-interval",
default=None,
choices=["day", "hour", "minute", "second", "tenhertz"],
help="Default same as --interval",
metavar="INTERVAL",
)
output_group.add_argument(
"--output-observatory",
default=None,
help="Defaults to value of --observatory argument.",
metavar="OBS",
nargs="*",
type=str,
)
output_group.add_argument(
"--output-port",
default=7981,
help="Write to specified port",
metavar="PORT",
type=int,
)
output_group.add_argument(
"--output-read-port",
default=2060,
help="Read from specified port",
metavar="PORT",
type=int,
)
output_group.add_argument(
"--output-stdout",
action="store_true",
default=False,
help="Write to standard output",
)
output_group.add_argument(
"--output-url", help="Write to a file:// url pattern", metavar="URL"
)
output_group.add_argument(
"--output-url-interval",
default=86400,
help="Output interval in seconds",
metavar="INTERVAL",
type=int,
)
output_group.add_argument(
"--rename-output-channel",
action="append",
help="Rename an output channel before it is written",
metavar=("FROM", "TO"),
nargs=2,
)
output_group.add_argument(
"--outlocationcode",
help="Defaults to --locationcode",
metavar="CODE",
type=edge.LocationCode,
)
output_group.add_argument(
"--output-edge-forceout",
action="store_true",
default=False,
help="Used when writing to EDGE, to close miniseed immediately.",
)
output_group.add_argument(
"--output-edge-tag",
default="GEOMAG",
help="Used when writing to EDGE, to identify source of data.",
metavar="TAG",
)
# Processing group
processing_group = parser.add_argument_group("Processing", "How data is processed.")
processing_group.add_argument(
"--algorithm",
choices=[k for k in algorithms],
default="identity",
help='Default is "identity", which skips processing',
)
for k in algorithms:
algorithms[k].add_arguments(processing_group)
processing_group.add_argument(
"--update",
action="store_true",
default=False,
help="""
Check for gaps in output,
and merge new data into existing.
""",
)
processing_group.add_argument(
"--update-limit",
type=int,
Update mode checks for gaps and will step backwards
to gap fill, if the start of the current interval is a gap,
when limit is set to more than 0.
""",
metavar="N",
)
processing_group.add_argument(
"--no-trim",
action="store_true",
default=False,
help="Ensures output data will not be trimmed down",
)
# GOES parameters
goes_group = parser.add_argument_group(
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
"GOES parameters", 'Used to configure "--input goes"'
)
goes_group.add_argument(
"--input-goes-directory",
default=".",
help="Directory for support files for goes input of imfv283 data",
metavar="PATH",
)
goes_group.add_argument(
"--input-goes-getdcpmessages",
default="",
help="Location of getDcpMessages.",
metavar="PATH",
)
goes_group.add_argument(
"--input-goes-password",
default="",
help="Password for goes user",
metavar="PASSWORD",
)
goes_group.add_argument(
"--input-goes-server",
nargs="*",
help="The server name(s) to retrieve the GOES data from",
metavar="HOST",
)
goes_group.add_argument(
"--input-goes-user",
default="GEOMAG",
help="The user name to use to retrieve data from GOES",
metavar="USER",
)
# still allow deprecated arguments for now, but hide behind opt in flag
deprecated = parser.add_argument_group("Deprecated")
deprecated.add_argument(
"--enable-deprecated-arguments",
action="store_true",
default=False,
help="enable support for deprecated arguments",
)
# check for this argument before adding deprecated args to usage
if "--enable-deprecated-arguments" in args:
add_deprecated_args(deprecated, input_type_group, output_type_group)
deprecated.add_argument(
"--volt-conversion",
default=100.0,
metavar="NT",
help="(Deprecated, Unused) Conversion factor (nT/V) for volts",
)
deprecated.add_argument(
"--bin-conversion",
default=500.0,
metavar="NT",
help="(Deprecated, Unused) Conversion factor (nT/bin) for bins",
)

Jeremy M Fee
committed
return parser.parse_args(args)
def add_deprecated_args(parser, input_group, output_group):
print(
"WARNING: you are enabling deprecated arguments," + " please update your usage",
file=sys.stderr,
)
# argument options for inputs and outputs,
# replaced with less TYPE specific options
parser.add_argument(
"--input-edge-port",
type=int,
default=2060,
help='(Deprecated) \
Use "--input-port".',
metavar="PORT",
)
parser.add_argument(
"--output-edge-port",
type=int,
dest="edge_write_port",
default=7981,
help='(Deprecated) \
Use "--output-port".',
metavar="PORT",
)
parser.add_argument(
"--output-edge-cwb-port",
type=int,
dest="edge_write_port",
default=7981,
help='(Deprecated) \
Use "--output miniseed" and "--output-port PORT".',
metavar="PORT",
)
parser.add_argument(
"--output-edge-read-port",
type=int,
default=2060,
help='(Deprecated) \
Use "--output-read-port".',
# input arguments (generally use "--input TYPE")
input_group.add_argument(
"--input-edge",
help='(Deprecated) \
Use "--input edge" and "--input-host HOST".',
metavar="HOST",
)
input_group.add_argument(
"--input-iaga-file",
help='(Deprecated) \
Use "--input iaga2002" and "--input-file FILE".',
metavar="FILE",
)
input_group.add_argument(
"--input-iaga-stdin",
action="store_true",
default=False,
help='(Deprecated) \
Use "--input iaga2002" and "--input-stdin".',
)
input_group.add_argument(
"--input-iaga-url",
help='(Deprecated) \
Use "--input iaga2002" and "--input-url URL".',
metavar="URL",
)
input_group.add_argument(
"--input-imfv283-file",
help='(Deprecated) \
Use "--input imfv283" and "--input-file FILE".',
metavar="FILE",
)
input_group.add_argument(
"--input-imfv283-stdin",
action="store_true",
default=False,
help='(Deprecated) \
Use "--input imfv283" and "--input-stdin"',
)
input_group.add_argument(
"--input-imfv283-url",
help='(Deprecated) \
Use "--input iaga2002" and "--input-url URL".',
metavar="URL",
)
input_group.add_argument(
"--input-imfv283-goes",
action="store_true",
default=False,
help='(Deprecated) \
Use "--input goes".',
)
input_group.add_argument(
"--input-pcdcp-file",
help='(Deprecated) \
Use "--input pcdcp" and "--input-file FILE".',
metavar="FILE",
)
input_group.add_argument(
"--input-pcdcp-stdin",
action="store_true",
default=False,
help='(Deprecated) \
Use "--input pcddp" and "--input-stdin".',
)
input_group.add_argument(
"--input-pcdcp-url",
help='(Deprecated) \
Use "--input pcdcp" and "--input-url URL".',
# output arguments (generally use "--output TYPE")
output_group.add_argument(
"--output-iaga-file",
help='(Deprecated) \
Use "--output iaga2002" and "--output-file FILE".',
metavar="FILE",
)
output_group.add_argument(
"--output-iaga-stdout",
action="store_true",
default=False,
help='(Deprecated) \
Use "--output iaga2002" and "--output-stdout".',
)
output_group.add_argument(
"--output-iaga-url",
help='(Deprecated) \
Use "--output iaga2002" and "--output-url URL".',
metavar="URL",
)
output_group.add_argument(
"--output-pcdcp-file",
help='(Deprecated) \
Use "--output pcdcp" and "--output-file FILE".',
metavar="FILE",
)
output_group.add_argument(
"--output-pcdcp-stdout",
action="store_true",
default=False,
help='(Deprecated) \
Use "--output pcdcp" and "--output-stdout".',
)
output_group.add_argument(
"--output-pcdcp-url",
help='(Deprecated) \
Use "--output pcdcp" and "--output-url URL".',
metavar="URL",
)
output_group.add_argument(
"--output-edge",
help='(Deprecated) \
Use "--output edge" and "--output-host HOST".',
metavar="HOST",
)
output_group.add_argument(
"--output-plot",
action="store_true",
default=False,
help='(Deprecated) \
Use "--output plot".',
)
def parse_deprecated_arguments(args):
# TODO: remove argument mapping in future version
# map legacy input arguments
usingDeprecated = False
if args.input_edge is not None:
args.input_host = args.input_edge
args.input_port = args.input_edge_port
usingDeprecated = True
elif args.input_iaga_file is not None:
args.input_file = args.input_iaga_file
usingDeprecated = True
elif args.input_iaga_stdin:
args.input_stdin = True
usingDeprecated = True
elif args.input_iaga_url is not None:
args.input_url = args.input_iaga_url
usingDeprecated = True
elif args.input_imfv283_file is not None:
args.input_file = args.input_imfv283_file
usingDeprecated = True
elif args.input_imfv283_url is not None:
args.input_url = args.input_imfv283_url
usingDeprecated = True
elif args.input_imfv283_goes:
usingDeprecated = True
# map legacy output arguments
if args.output_edge is not None:
args.output_host = args.output_edge
args.output_port = args.edge_write_port
usingDeprecated = True
elif args.output_iaga_file is not None:
args.output_file = args.output_iaga_file
usingDeprecated = True
elif args.output_iaga_stdout:
args.output_stdout = True
usingDeprecated = True
elif args.output_iaga_url is not None:
args.output_url = args.output_iaga_url
usingDeprecated = True
elif args.output_pcdcp_file is not None:
args.output_file = args.output_pcdcp_file
usingDeprecated = True
elif args.output_pcdcp_stdout:
args.output_stdout = True
usingDeprecated = True
elif args.output_pcdcp_url is not None:
args.output_url = args.output_pcdcp_url
usingDeprecated = True
elif args.output_plot:
usingDeprecated = True
if usingDeprecated:
print(
"WARNING: you are using deprecated arguments,"
+ " please update your usage",
file=sys.stderr,
)