changelog generator & diff tool stormlightlabs.github.io/git-storm/
changelog changeset markdown golang git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 60 lines 1.3 kB view raw
1package main 2 3import ( 4 "fmt" 5 6 "github.com/stormlightlabs/git-storm/internal/toolchain" 7) 8 9func updateToolchainTargets(repoPath, newVersion string, selectors []string) ([]toolchain.Manifest, error) { 10 if len(selectors) == 0 { 11 return nil, nil 12 } 13 14 selected, interactive, available, err := toolchain.ResolveTargets(repoPath, selectors) 15 if err != nil { 16 return nil, err 17 } 18 19 if interactive { 20 if len(available) == 0 { 21 return nil, fmt.Errorf("no toolchain manifests detected for interactive selection") 22 } 23 chosen, err := toolchain.SelectManifests(available) 24 if err != nil { 25 return nil, err 26 } 27 selected = append(selected, chosen...) 28 } 29 30 selected = dedupeManifests(selected) 31 if len(selected) == 0 { 32 return nil, nil 33 } 34 35 for _, manifest := range selected { 36 if err := toolchain.UpdateManifest(manifest, newVersion); err != nil { 37 return nil, err 38 } 39 } 40 41 return selected, nil 42} 43 44func dedupeManifests(manifests []toolchain.Manifest) []toolchain.Manifest { 45 if len(manifests) == 0 { 46 return nil 47 } 48 49 seen := make(map[string]struct{}) 50 var result []toolchain.Manifest 51 for _, manifest := range manifests { 52 key := manifest.Path 53 if _, ok := seen[key]; ok { 54 continue 55 } 56 seen[key] = struct{}{} 57 result = append(result, manifest) 58 } 59 return result 60}