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

Function runSearch

apps/cli/internal/cli/search.go:53–107  ·  view source on GitHub ↗
(cmd *cobra.Command, args []string)

Source from the content-addressed store, hash-verified

51}
52
53func runSearch(cmd *cobra.Command, args []string) error {
54 flags := GetGlobalFlags()
55 query := args[0]
56
57 scanDir := ResolveScanDir(nil)
58
59 taskScanner := scanner.NewScanner(scanDir, flags.Verbose, flags.IgnoreDirs)
60 result, err := taskScanner.Scan()
61 if err != nil {
62 return fmt.Errorf("scan failed: %w", err)
63 }
64
65 tasks := result.Tasks
66 makeFilePathsRelative(tasks, scanDir)
67
68 warnDuplicateIDs(tasks)
69
70 // Apply filters before search (narrows which tasks are searched)
71 if len(searchFilters) > 0 {
72 tasks, err = applyFilters(tasks, searchFilters)
73 if err != nil {
74 return fmt.Errorf("filter error: %w", err)
75 }
76 }
77
78 // Apply sorting before search (preserves order through search)
79 if searchSort != "" {
80 if err := sortTasks(tasks, searchSort); err != nil {
81 return fmt.Errorf("sort error: %w", err)
82 }
83 }
84
85 results := search.Search(tasks, query)
86
87 // Apply limit after search (limits final result count)
88 if searchLimit > 0 && searchLimit < len(results) {
89 results = results[:searchLimit]
90 }
91
92 if len(results) == 0 {
93 fmt.Fprintf(os.Stderr, "No tasks found matching %q\n", query)
94 return nil
95 }
96
97 switch searchFormat {
98 case "json":
99 return WriteJSON(os.Stdout, results)
100 case "yaml":
101 return WriteYAML(os.Stdout, results)
102 case "table":
103 return outputSearchTable(results, query)
104 default:
105 return ValidateFormat(searchFormat, []string{"table", "json", "yaml"})
106 }
107}
108
109func outputSearchTable(results []search.Result, query string) error {
110 r := getRenderer()

Callers 1

Calls 11

ScanMethod · 0.95
GetGlobalFlagsFunction · 0.85
ResolveScanDirFunction · 0.85
makeFilePathsRelativeFunction · 0.85
warnDuplicateIDsFunction · 0.85
WriteJSONFunction · 0.85
WriteYAMLFunction · 0.85
outputSearchTableFunction · 0.85
ValidateFormatFunction · 0.85
applyFiltersFunction · 0.70
sortTasksFunction · 0.70

Tested by 1