def run(self, session: Session): args = session.command_args if args.token: session.token = args.token print("updated token") if args.l: session.language = args.l print(f"updated language to {session.language}") if args.d or args.y or args.today or args.next: now = datetime.now(timezone(timedelta(hours=-5))) if args.today: if now.month != 12: raise ValueError( "advent of code is not currently running. try -n?") if now.day not in _valid_days: raise ValueError("advent of code is not currently running") session.challenge.year = now.year session.challenge.day = now.day elif args.next: if now.month == 11 and now.day == 30: session.challenge.year = now.year session.challenge.day = 1 else: if now.month != 12: raise ValueError( "advent of code is not running tomorrow") if now.day + 1 not in _valid_days: raise ValueError( "advent of code is not running tomorrow") session.challenge.year = now.year session.challenge.day = now.day + 1 else: if args.y: session.challenge.year = args.y session.challenge = Challenge(args.y, session.challenge.day) if args.d: session.challenge.day = args.d session.challenge = Challenge(session.challenge.year, args.d) print(f"updated challenge to {session.challenge}") session.validate() session.cache() print(session)