You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.6 KiB
Plaintext

#!/usr/bin/env seiscomp-python
from __future__ import print_function
import sys
from optparse import OptionParser
from nettab.tab import Tab
import seiscomp.io
def main():
# Creating the parser
parser = OptionParser(usage="Tab to Inventory (sc3) converter", version="1.0", add_help_option=True)
parser.add_option("-i", "--ip", type="string",
help="Prefix to be added to each instrument generated.", dest="instrumentPrefix", default=None)
parser.add_option("-f", "--filterf", type="string",
help="Indicates a folder containing the filters coefficients files", dest="ffolder", default=None)
parser.add_option("-x", "--xmlf", type="string",
help="Indicates a folder containing the XML inventory files (needed for station group support)", dest="xfolder", default=None)
parser.add_option("-D", "--database", type="string",
help="Database URL for inventory (needed for station group support)", dest="database", default=None)
parser.add_option("", "--force", action="store_true",
help="Don't stop on error of individual files", dest="force", default=False)
parser.add_option("-g", "--generate", action="store_true",
help="Generate XML file at the end", dest="generate", default=False)
parser.add_option("-c", "--check", action="store_true",
help="Check the loaded files", dest="check", default=False)
parser.add_option("-d", "--default", type="string",
help="Indicates the default file", dest="defaultFile", default=None)
parser.add_option("-o", "--output", type="string",
help="Indicates the output file", dest="outFile", default="-")
# Parsing & Error check
(options, args) = parser.parse_args()
error = False
if len(args) < 1:
print("No input file(s) to digest", file=sys.stderr)
error = True
if error:
print("Use -h for help on usage", file=sys.stderr)
return 1
# Execution
try:
inv = None
t=Tab(options.instrumentPrefix, options.defaultFile, options.ffolder, options.xfolder, options.database)
for f in args:
try:
t.digest(f)
except Exception as e:
print("Error digesting %s:\n %s" % (f, e), file=sys.stderr)
if not options.force:
raise e
if options.check:
t.check()
return
if options.generate:
inv = t.sc3Obj()
if inv:
ar = seiscomp.io.XMLArchive()
print("Generating file: %s" % options.outFile, file=sys.stderr)
ar.create(options.outFile)
ar.setFormattedOutput(True)
ar.setCompression(False)
ar.writeObject(inv)
ar.close()
except Exception as e:
print("Error: " + str(e), file=sys.stderr)
return 1
finally:
print("Ending.", file=sys.stderr)
return 0
if __name__ == "__main__":
ret = main()
sys.exit(ret)