github.com/saracen/git-lfs@v2.5.2+incompatible/config/extension.go (about) 1 package config 2 3 import ( 4 "fmt" 5 "sort" 6 ) 7 8 // An Extension describes how to manipulate files during smudge and clean. 9 // Extensions are parsed from the Git config. 10 type Extension struct { 11 Name string 12 Clean string 13 Smudge string 14 Priority int 15 } 16 17 // SortExtensions sorts a map of extensions in ascending order by Priority 18 func SortExtensions(m map[string]Extension) ([]Extension, error) { 19 pMap := make(map[int]Extension) 20 priorities := make([]int, 0, len(m)) 21 for n, ext := range m { 22 p := ext.Priority 23 if _, exist := pMap[p]; exist { 24 err := fmt.Errorf("duplicate priority %d on %s", p, n) 25 return nil, err 26 } 27 pMap[p] = ext 28 priorities = append(priorities, p) 29 } 30 31 sort.Ints(priorities) 32 33 result := make([]Extension, len(priorities)) 34 for i, p := range priorities { 35 result[i] = pMap[p] 36 } 37 38 return result, nil 39 }