...
1
2
3
4 package resource
5
6 import (
7 "path/filepath"
8 "strings"
9
10 "sigs.k8s.io/kustomize/api/internal/git"
11 kyaml "sigs.k8s.io/kustomize/kyaml/yaml"
12 )
13
14
15
16 type Origin struct {
17
18
19
20 Path string `json:"path,omitempty" yaml:"path,omitempty"`
21
22
23
24 Repo string `json:"repo,omitempty" yaml:"repo,omitempty"`
25
26
27
28 Ref string `json:"ref,omitempty" yaml:"ref,omitempty"`
29
30
31
32
33
34
35
36 ConfiguredIn string `json:"configuredIn,omitempty" yaml:"configuredIn,omitempty"`
37
38
39 ConfiguredBy kyaml.ResourceIdentifier `json:"configuredBy,omitempty" yaml:"configuredBy,omitempty"`
40 }
41
42
43 func (origin *Origin) Copy() Origin {
44 if origin == nil {
45 return Origin{}
46 }
47 return *origin
48 }
49
50
51 func (origin *Origin) Append(path string) *Origin {
52 originCopy := origin.Copy()
53 repoSpec, err := git.NewRepoSpecFromURL(path)
54 if err == nil {
55 originCopy.Repo = repoSpec.CloneSpec()
56 absPath := repoSpec.AbsPath()
57 path = absPath[strings.Index(absPath[1:], "/")+1:][1:]
58 originCopy.Path = ""
59 originCopy.Ref = repoSpec.Ref
60 }
61 originCopy.Path = filepath.Join(originCopy.Path, path)
62 return &originCopy
63 }
64
65
66 func (origin *Origin) String() (string, error) {
67 anno, err := kyaml.Marshal(origin)
68 return string(anno), err
69 }
70
71
72 type Transformations []*Origin
73
74
75 func (transformations *Transformations) String() (string, error) {
76 anno, err := kyaml.Marshal(transformations)
77 return string(anno), err
78 }
79
80
81
82 func OriginFromCustomPlugin(res *Resource) (*Origin, error) {
83 origin, err := res.GetOrigin()
84 if err != nil {
85 return nil, err
86 }
87 var result *Origin
88 if origin != nil {
89 result = &Origin{
90 Repo: origin.Repo,
91 Ref: origin.Ref,
92 ConfiguredIn: origin.Path,
93 ConfiguredBy: kyaml.ResourceIdentifier{
94 TypeMeta: kyaml.TypeMeta{
95 APIVersion: res.GetApiVersion(),
96 Kind: res.GetKind(),
97 },
98 NameMeta: kyaml.NameMeta{
99 Name: res.GetName(),
100 Namespace: res.GetNamespace(),
101 },
102 },
103 }
104 }
105 return result, nil
106 }
107
View as plain text