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

Function runStats

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

Source from the content-addressed store, hash-verified

52}
53
54func runStats(cmd *cobra.Command, args []string) error {
55 flags := GetGlobalFlags()
56
57 scanDir := ResolveScanDir(args)
58
59 // Create scanner and scan for tasks
60 taskScanner := scanner.NewScanner(scanDir, flags.Verbose, flags.IgnoreDirs)
61 result, err := taskScanner.Scan()
62 if err != nil {
63 return fmt.Errorf("scan failed: %w", err)
64 }
65
66 tasks := result.Tasks
67
68 // Report any scan errors if verbose
69 if flags.Verbose && len(result.Errors) > 0 {
70 fmt.Fprintf(os.Stderr, "\nWarning: encountered %d errors during scan:\n", len(result.Errors))
71 for _, scanErr := range result.Errors {
72 fmt.Fprintf(os.Stderr, " %s: %v\n", scanErr.FilePath, scanErr.Error)
73 }
74 fmt.Fprintln(os.Stderr)
75 }
76
77 warnDuplicateIDs(tasks)
78
79 // Calculate metrics
80 m := metrics.Calculate(tasks)
81
82 if statsGroupBy != "" && statsGroupBy != "phase" {
83 return fmt.Errorf("unsupported group-by field: %s (supported: phase)", statsGroupBy)
84 }
85
86 // Output in requested format
87 switch statsFormat {
88 case "json":
89 return outputStatsJSON(m)
90 case "yaml":
91 return WriteYAML(os.Stdout, m)
92 case "table":
93 return outputStatsTable(m, statsGroupBy)
94 default:
95 return ValidateFormat(statsFormat, []string{"table", "json", "yaml"})
96 }
97}
98
99// outputStatsJSON outputs metrics as JSON
100func outputStatsJSON(m *metrics.Metrics) error {

Callers 1

captureStatsOutputFunction · 0.85

Calls 8

ScanMethod · 0.95
GetGlobalFlagsFunction · 0.85
ResolveScanDirFunction · 0.85
warnDuplicateIDsFunction · 0.85
outputStatsJSONFunction · 0.85
WriteYAMLFunction · 0.85
outputStatsTableFunction · 0.85
ValidateFormatFunction · 0.85

Tested by 1

captureStatsOutputFunction · 0.68