def parse_arguments(): ''' Description: Parses arguments from the command line. ''' version_number = Version.version_number() default_date_range = int(Config.get('default_date_range')) # Create a command line arugment parser description = ('Downloads LST auxillary inputs, then archives them for' ' future use. Dates must be the in the format: "YYYYMMDD"') parser = ArgumentParser(description=description, formatter_class=ArgumentDefaultsHelpFormatter) # ---- Add parameters ---- parser.add_argument('--start-date', action='store', dest='start_date', metavar='YYYYMMDD', type=input_date_validation, required=False, default=(date.today() - timedelta(days=default_date_range)), help='The start date of the date range of auxiliary' ' data to download.') parser.add_argument('--end-date', action='store', dest='end_date', metavar='YYYYMMDD', type=input_date_validation, required=False, default=date.today(), help='The end date of the date range of auxiliary' ' data to download.') parser.add_argument('--date', action='store', dest='date', metavar='YYYYMMDD', type=input_date_validation, required=False, help='Sets both start and end date to this date.' ' Overrides start-date and end-date arguments.') parser.add_argument('--report', action='store_true', dest='report', default=False, help='Only report what will happen.') parser.add_argument('--verbose', action='store_true', dest='verbose', default=False, help='Turn verbose logging on.') parser.add_argument('--debug', action='store_true', dest='debug', default=False, help='Turn debug logging on.') parser.add_argument('--version', action='version', version='%(prog)s {0}'.format(version_number), help='Displays the version of the software.') # Parse the command line parameters args = parser.parse_args() # Check if date was specified. If so then override start and end. if args.date is not None: args.start_date = args.date args.end_date = args.date return args
def parse_commandline(): ''' Description: Provide the command line definition and parsing. Make sure the date information is good. ''' version_number = Version.version_number() # Create a command line arugment parser description = ('Downloads NARR data and extracts the required parameters' ' for Land Surface Temperature processing. The parameters' ' are then archived for later use. The NARR data is' ' packaged into gzipped tar balls containing 1 to 4 days' ' worth of data from the source site. Because of that,' ' all days contained in the package will always be' ' processed.') parser = ArgumentParser(description=description) # ---- Add parameters ---- parser.add_argument('--start-date', action='store', dest='start_date', metavar='YYYYMMDD', type=input_date_validation, required=False, help=('The start date YYYYMMDD(inclusive)' ' if specifying a range.' ' Defaults to --end-date if not specified.')) parser.add_argument('--end-date', action='store', dest='end_date', metavar='YYYYMMDD', type=input_date_validation, required=False, help=('The end date YYYYMMDD(inclusive)' ' if specifying a range.')) parser.add_argument('--date', action='store', dest='date', metavar='YYYYMMDD', type=input_date_validation, required=False, help='The date YYYYMMDD for a specific date.') parser.add_argument('--version', action='version', version='%(prog)s {0}'.format(version_number), help='Displays the version of the software.') # Parse the command line parameters args = parser.parse_args() s_date = None e_date = None # Check if dates were given if args.date is not None: s_date = args.date e_date = args.date elif args.end_date is not None: e_date = args.end_date if args.start_date is not None: s_date = args.start_date else: s_date = e_date else: raise Exception('Must supply either --date or --end-date') if e_date < s_date: raise Exception('--end-date must be equal-to or after --start-date') # Start date must start on a day based on a 3day per file pattern day = (s_date.day - 1) / 3 * 3 + 1 delta = timedelta(days=(day - s_date.day)) s_date += delta return (s_date, e_date)