diff --git a/kosmorrolib/main.py b/kosmorrolib/main.py index 0b2fb1b..db663c9 100644 --- a/kosmorrolib/main.py +++ b/kosmorrolib/main.py @@ -21,7 +21,7 @@ import locale import re import sys -from datetime import date +from datetime import date, timedelta from termcolor import colored from kosmorrolib.version import VERSION @@ -41,7 +41,12 @@ def main(): return 0 if args.special_action() else 1 try: - compute_date = get_date(args.date) + if args.until_date is None: + from_date = get_date(args.date) + until_date = from_date + else: + until_date = get_date(args.until_date) + from_date = get_date(args.from_date) if args.from_date is not None else date.today() except ValueError as error: print(colored(error.args[0], color='red', attrs=['bold'])) return -1 @@ -60,15 +65,24 @@ def main(): "coordinate."), 'yellow')) try: + compute_date = from_date + selected_dumper = output_formats[args.format](None, None, date=None, timezone=args.timezone, + with_colors=args.colors) ephemeris = EphemeridesComputer(position) - ephemerides = ephemeris.compute_ephemerides(compute_date) - events_list = events.search_events(compute_date) + output = [] + while compute_date <= until_date: + ephemerides = ephemeris.compute_ephemerides(compute_date) + events_list = events.search_events(compute_date) + + selected_dumper.date = compute_date + selected_dumper.ephemeris = ephemerides + selected_dumper.events = events_list + + output.append(selected_dumper.to_string()) + + compute_date = compute_date + timedelta(days=1) - selected_dumper = output_formats[args.format](ephemerides, events_list, - date=compute_date, timezone=args.timezone, - with_colors=args.colors) - output = selected_dumper.to_string() except UnavailableFeatureError as error: print(colored(error.msg, 'red')) return 2 @@ -81,7 +95,7 @@ def main(): print(_('Could not save the output in "{path}": {error}').format(path=args.output, error=error.strerror)) elif not selected_dumper.is_file_output_needed(): - print(output) + print('\n\n'.join(output)) else: print(colored(_('Selected output format needs an output file (--output).'), color='red')) return 1 @@ -150,8 +164,15 @@ def get_args(output_formats: [str]): help=_("The observer's longitude on Earth")) parser.add_argument('--date', '-d', type=str, default=today.strftime('%Y-%m-%d'), help=_('The date for which the ephemerides must be computed (in the YYYY-MM-DD format). ' - 'Defaults to the current date ({default_date})').format( - default_date=today.strftime('%Y-%m-%d'))) + 'Defaults to the current date ({default_date}). Ignored if the --from and --to are ' + 'used.').format(default_date=today.strftime('%Y-%m-%d'))) + parser.add_argument('--from', type=str, default=None, dest='from_date', + help=_('The first of the set of dates the computations must be done for. If this argument ' + 'is set, then the --until argument is mandatory. Defaults to the current date if only ' + 'the --until argument is set.')) + parser.add_argument('--until', type=str, default=None, dest='until_date', + help=_('The last of the set of dates the computations must be done for. Mandatory ' + 'if the --from argument is set, then this argument is mandatory.')) parser.add_argument('--timezone', '-t', type=int, default=0, help=_('The timezone to display the hours in (e.g. 2 for UTC+2 or -3 for UTC-3).')) parser.add_argument('--no-colors', dest='colors', action='store_false',