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

Function parseProjectEntries

apps/cli/internal/cli/registry.go:83–110  ·  view source on GitHub ↗

parseProjectEntries converts raw YAML entries into validated GlobalProjectEntry values.

(projects []globalProjectYAML, cfgDir string)

Source from the content-addressed store, hash-verified

81
82// parseProjectEntries converts raw YAML entries into validated GlobalProjectEntry values.
83func parseProjectEntries(projects []globalProjectYAML, cfgDir string) ([]GlobalProjectEntry, error) {
84 entries := make([]GlobalProjectEntry, 0, len(projects))
85 var errs []error
86
87 for i, p := range projects {
88 entry, err := resolveProjectEntry(p, i, cfgDir)
89 if err != nil {
90 errs = append(errs, err)
91 continue
92 }
93 entries = append(entries, entry)
94 }
95
96 // Check for duplicate IDs.
97 seen := make(map[string]int, len(entries))
98 for i, e := range entries {
99 if prev, ok := seen[e.ID]; ok {
100 errs = append(errs, fmt.Errorf("projects[%d]: duplicate id %q (first seen at index %d)", i, e.ID, prev))
101 } else {
102 seen[e.ID] = i
103 }
104 }
105
106 if len(errs) > 0 {
107 return nil, errors.Join(errs...)
108 }
109 return entries, nil
110}
111
112// resolveProjectEntry normalizes a single YAML project entry into a GlobalProjectEntry.
113func resolveProjectEntry(p globalProjectYAML, index int, cfgDir string) (GlobalProjectEntry, error) {

Callers 1

LoadGlobalRegistryFunction · 0.85

Calls 1

resolveProjectEntryFunction · 0.85

Tested by

no test coverage detected