...
1
16
17 package releaseutil
18
19 import (
20 "fmt"
21 "regexp"
22 "strconv"
23 "strings"
24 )
25
26
27 type SimpleHead struct {
28 Version string `json:"apiVersion"`
29 Kind string `json:"kind,omitempty"`
30 Metadata *struct {
31 Name string `json:"name"`
32 Annotations map[string]string `json:"annotations"`
33 } `json:"metadata,omitempty"`
34 }
35
36 var sep = regexp.MustCompile("(?:^|\\s*\n)---\\s*")
37
38
39 func SplitManifests(bigFile string) map[string]string {
40
41
42
43
44 tpl := "manifest-%d"
45 res := map[string]string{}
46
47 bigFileTmp := strings.TrimSpace(bigFile)
48 docs := sep.Split(bigFileTmp, -1)
49 var count int
50 for _, d := range docs {
51 if d == "" {
52 continue
53 }
54
55 d = strings.TrimSpace(d)
56 res[fmt.Sprintf(tpl, count)] = d
57 count = count + 1
58 }
59 return res
60 }
61
62
63 type BySplitManifestsOrder []string
64
65 func (a BySplitManifestsOrder) Len() int { return len(a) }
66 func (a BySplitManifestsOrder) Less(i, j int) bool {
67
68 anum, _ := strconv.ParseInt(a[i][len("manifest-"):], 10, 0)
69 bnum, _ := strconv.ParseInt(a[j][len("manifest-"):], 10, 0)
70 return anum < bnum
71 }
72 func (a BySplitManifestsOrder) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
73
View as plain text