835c438405
Turn several multiline strings into single-line strings for better translatability.
42 lines
887 B
Go
42 lines
887 B
Go
package config
|
|
|
|
import (
|
|
"errors"
|
|
"sort"
|
|
|
|
"github.com/git-lfs/git-lfs/v3/tr"
|
|
)
|
|
|
|
// An Extension describes how to manipulate files during smudge and clean.
|
|
// Extensions are parsed from the Git config.
|
|
type Extension struct {
|
|
Name string
|
|
Clean string
|
|
Smudge string
|
|
Priority int
|
|
}
|
|
|
|
// SortExtensions sorts a map of extensions in ascending order by Priority
|
|
func SortExtensions(m map[string]Extension) ([]Extension, error) {
|
|
pMap := make(map[int]Extension)
|
|
priorities := make([]int, 0, len(m))
|
|
for n, ext := range m {
|
|
p := ext.Priority
|
|
if _, exist := pMap[p]; exist {
|
|
err := errors.New(tr.Tr.Get("duplicate priority %d on %s", p, n))
|
|
return nil, err
|
|
}
|
|
pMap[p] = ext
|
|
priorities = append(priorities, p)
|
|
}
|
|
|
|
sort.Ints(priorities)
|
|
|
|
result := make([]Extension, len(priorities))
|
|
for i, p := range priorities {
|
|
result[i] = pMap[p]
|
|
}
|
|
|
|
return result, nil
|
|
}
|