@@ -49,19 +49,26 @@ def cli():
4949 help = "Which Sentry issues to fetch" ,
5050)
5151@click .option (
52- "-s " ,
53- "--since " ,
52+ "-S " ,
53+ "--start-date " ,
5454 type = click .DateTime (formats = ["%Y-%m-%d" ]),
5555 default = None ,
5656 help = f"Start date (inclusive) in YYYY-MM-DD; defaults to { DEFAULT_DAYS_WINDOW } days ago" ,
5757)
5858@click .option (
59- "-u " ,
60- "--until " ,
59+ "-E " ,
60+ "--end-date " ,
6161 type = click .DateTime (formats = ["%Y-%m-%d" ]),
6262 default = None ,
6363 help = "End date (exclusive) in YYYY-MM-DD; defaults to today" ,
6464)
65+ @click .option (
66+ "-D" ,
67+ "--days" ,
68+ type = int ,
69+ default = None ,
70+ help = "End date (exclusive) in YYYY-MM-DD; defaults to today" ,
71+ )
6572@click .option (
6673 "-c" ,
6774 "--chunk-days" ,
@@ -80,7 +87,7 @@ def cli():
8087 "-M" , "--max-errors" , type = click .IntRange (min = 1 ), default = DEFAULT_MAX_ERRORS
8188)
8289@click .option ("-L" , "--cached-limit" , type = click .IntRange (min = 1 ), default = None )
83- def get (event , since , until , chunk_days , jobs , max_errors , cached_limit ):
90+ def get (event , start_date , end_date , days , chunk_days , jobs , max_errors , cached_limit ):
8491 """Fetch events in parallel using time-window chunking."""
8592
8693 token = os .getenv ("SENTRY_TOKEN" )
@@ -90,18 +97,50 @@ def get(event, since, until, chunk_days, jobs, max_errors, cached_limit):
9097
9198 now = datetime .now (timezone .utc )
9299
93- since = since or (now - timedelta (days = DEFAULT_DAYS_WINDOW ))
94- until = until or now
100+ if start_date and days :
101+ click .echo ("Warning: overriding --start-date because --days was present" )
102+ start_date = None
103+
104+ if start_date :
105+ start_date = datetime (
106+ year = start_date .year ,
107+ month = start_date .month ,
108+ day = start_date .day ,
109+ hour = now .hour ,
110+ minute = now .minute ,
111+ second = now .second ,
112+ microsecond = now .microsecond ,
113+ tzinfo = now .tzinfo ,
114+ )
115+ if end_date :
116+ end_date = datetime (
117+ year = end_date .year ,
118+ month = end_date .month ,
119+ day = end_date .day ,
120+ hour = now .hour ,
121+ minute = now .minute ,
122+ second = now .second ,
123+ microsecond = now .microsecond ,
124+ tzinfo = now .tzinfo ,
125+ )
126+ else :
127+ end_date = now
128+
129+ start_date = start_date or (end_date - timedelta (days = days or DEFAULT_DAYS_WINDOW ))
130+ start_date += timedelta (microseconds = 1 )
95131
96- click .echo (f"{ now :%Y-%m-%d %H:%M:%S} [Started]" )
132+ click .echo (
133+ f"{ now :%Y-%m-%d %H:%M:%S} [Started] "
134+ f"from: { start_date :%Y-%m-%d %H:%M:%S} , to: { end_date :%Y-%m-%d %H:%M:%S} "
135+ )
97136
98137 # Get events
99138 for ev in event :
100139 parallel_fetch (
101140 event_name = ev ,
102141 token = token ,
103- since = since ,
104- until = until ,
142+ since = start_date ,
143+ until = end_date ,
105144 days_per_chunk = chunk_days ,
106145 max_workers = jobs ,
107146 cached_limit = cached_limit ,
0 commit comments