| 167 | |
| 168 | |
| 169 | def build_parser(): |
| 170 | parser = argparse.ArgumentParser( |
| 171 | description="Read-only Sentry API helper for issues and events" |
| 172 | ) |
| 173 | parser.add_argument( |
| 174 | "--base-url", |
| 175 | default=os.environ.get("SENTRY_BASE_URL", DEFAULT_BASE_URL), |
| 176 | help="Sentry base URL (default: https://sentry.io)", |
| 177 | ) |
| 178 | parser.add_argument( |
| 179 | "--org", |
| 180 | default=os.environ.get("SENTRY_ORG", DEFAULT_ORG), |
| 181 | help="Sentry org slug", |
| 182 | ) |
| 183 | parser.add_argument( |
| 184 | "--project", |
| 185 | default=os.environ.get("SENTRY_PROJECT", DEFAULT_PROJECT), |
| 186 | help="Sentry project slug", |
| 187 | ) |
| 188 | parser.add_argument( |
| 189 | "--no-redact", |
| 190 | action="store_true", |
| 191 | help="Do not redact PII in output", |
| 192 | ) |
| 193 | |
| 194 | subparsers = parser.add_subparsers(dest="command", required=True) |
| 195 | |
| 196 | list_issues = subparsers.add_parser("list-issues", help="List issues") |
| 197 | list_issues.add_argument("--time-range", default="24h") |
| 198 | list_issues.add_argument("--environment", default="prod") |
| 199 | list_issues.add_argument("--query", default="") |
| 200 | list_issues.add_argument("--limit", type=int, default=20) |
| 201 | |
| 202 | issue_detail = subparsers.add_parser("issue-detail", help="Issue detail") |
| 203 | issue_detail.add_argument("issue_id") |
| 204 | |
| 205 | issue_events = subparsers.add_parser("issue-events", help="Issue events") |
| 206 | issue_events.add_argument("issue_id") |
| 207 | issue_events.add_argument("--time-range", default="24h") |
| 208 | issue_events.add_argument("--environment", default="prod") |
| 209 | issue_events.add_argument("--query", default="") |
| 210 | issue_events.add_argument("--limit", type=int, default=20) |
| 211 | |
| 212 | event_detail = subparsers.add_parser("event-detail", help="Event detail") |
| 213 | event_detail.add_argument("event_id") |
| 214 | event_detail.add_argument( |
| 215 | "--include-entries", |
| 216 | action="store_true", |
| 217 | help="Include event entries (may contain stack traces)", |
| 218 | ) |
| 219 | |
| 220 | return parser |
| 221 | |
| 222 | |
| 223 | def main(): |