()
| 334 | } |
| 335 | |
| 336 | func wizardGitHubFilters() (map[string]any, error) { |
| 337 | var filterChoice string |
| 338 | err := huh.NewSelect[string](). |
| 339 | Title("Which issues to import?"). |
| 340 | Options( |
| 341 | huh.NewOption("All open issues", "open"), |
| 342 | huh.NewOption("Filter by label", "label"), |
| 343 | huh.NewOption("Filter by assignee", "assignee"), |
| 344 | huh.NewOption("Filter by milestone", "milestone"), |
| 345 | huh.NewOption("All issues (open + closed)", "all"), |
| 346 | ). |
| 347 | Value(&filterChoice). |
| 348 | Run() |
| 349 | if err != nil { |
| 350 | return nil, fmt.Errorf("wizard cancelled: %w", err) |
| 351 | } |
| 352 | |
| 353 | filters := map[string]any{"state": "open"} |
| 354 | |
| 355 | switch filterChoice { |
| 356 | case "all": |
| 357 | filters["state"] = "all" |
| 358 | case "label": |
| 359 | var labels string |
| 360 | if err := promptInput("Labels", "Comma-separated labels to filter by", "", &labels); err != nil { |
| 361 | return nil, err |
| 362 | } |
| 363 | if labels != "" { |
| 364 | filters["labels"] = labels |
| 365 | } |
| 366 | case "assignee": |
| 367 | var assignee string |
| 368 | if err := promptInput("Assignee", "GitHub username", "", &assignee); err != nil { |
| 369 | return nil, err |
| 370 | } |
| 371 | if assignee != "" { |
| 372 | filters["assignee"] = assignee |
| 373 | } |
| 374 | case "milestone": |
| 375 | var milestone string |
| 376 | if err := promptInput("Milestone", "Milestone name or number", "", &milestone); err != nil { |
| 377 | return nil, err |
| 378 | } |
| 379 | if milestone != "" { |
| 380 | filters["milestone"] = milestone |
| 381 | } |
| 382 | } |
| 383 | |
| 384 | return filters, nil |
| 385 | } |
| 386 | |
| 387 | func wizardOutputDir() (string, error) { |
| 388 | outDir := importOutDir |
no test coverage detected