Source code for oasislmf.pytools.kat.cli

#!/usr/bin/env python

import argparse
import logging

from . import manager, logger


[docs] def validate_flags(args): flags = [ args.selt, args.melt, args.qelt, args.splt, args.mplt, args.qplt, ] if sum(flags) == 0: raise RuntimeError("ERROR: no file type flag provided to katpy, run with -h to see which flags are valid") if sum(flags) > 1: raise RuntimeError("ERROR: katpy cannot kat more than one file type flag") if args.files_in is None and args.dir_in is None: raise RuntimeError("Error: katpy must specify at least one of --files_in or --dir_in.") if args.file_type and args.file_type not in ["csv", "bin"]: raise RuntimeError("Error: katpy file_type must be [\"csv\", \"bin\"] or None")
[docs] def main(): parser = argparse.ArgumentParser(description='Concatenate ELT/PLT CSV files') parser.add_argument('-o', '--out', type=str, required=True, help='Output Concatenated CSV file') parser.add_argument('-f', '--file_type', type=str, default=None, help='Input file type if not discernible from input file suffix.') parser.add_argument('-i', '--files_in', type=str, nargs='+', required=False, help='Individual input file paths to concatenate') parser.add_argument('-d', '--dir_in', type=str, default=None, help='Path to the directory containing files for concatenation') parser.add_argument('-s', '--selt', action='store_true', help='Concatenate SELT CSV file') parser.add_argument('-m', '--melt', action='store_true', help='Concatenate MELT CSV file') parser.add_argument('-q', '--qelt', action='store_true', help='Concatenate QELT CSV file') parser.add_argument('-S', '--splt', action='store_true', help='Concatenate SPLT CSV file') parser.add_argument('-M', '--mplt', action='store_true', help='Concatenate MPLT CSV file') parser.add_argument('-Q', '--qplt', action='store_true', help='Concatenate QPLT CSV file') parser.add_argument('-u', '--unsorted', action='store_true', help='Do not sort by event/period ID') parser.add_argument('-v', '--logging-level', type=int, default=30, help='logging level (debug:10, info:20, warning:30, error:40, critical:50)') args = parser.parse_args() validate_flags(args) kwargs = vars(args) # Set up logging ch = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter) logger.addHandler(ch) logging_level = kwargs.pop('logging_level') logger.setLevel(logging_level) manager.main(**kwargs)
if __name__ == '__main__': main()