MCPcopy Create free account
hub / github.com/driangle/taskmd / wizardGitHubFilters

Function wizardGitHubFilters

apps/cli/internal/cli/importcmd.go:336–385  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

334}
335
336func 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
387func wizardOutputDir() (string, error) {
388 outDir := importOutDir

Callers 1

wizardGitHubConfigFunction · 0.85

Calls 1

promptInputFunction · 0.85

Tested by

no test coverage detected