MCPcopy
hub / github.com/helm/helm / LoadFiles

Function LoadFiles

pkg/chart/v2/loader/load.go:72–206  ·  view source on GitHub ↗

LoadFiles loads from in-memory files.

(files []*archive.BufferedFile)

Source from the content-addressed store, hash-verified

70
71// LoadFiles loads from in-memory files.
72func LoadFiles(files []*archive.BufferedFile) (*chart.Chart, error) {
73 c := new(chart.Chart)
74 subcharts := make(map[string][]*archive.BufferedFile)
75
76 // do not rely on assumed ordering of files in the chart and crash
77 // if Chart.yaml was not coming early enough to initialize metadata
78 for _, f := range files {
79 c.Raw = append(c.Raw, &common.File{Name: f.Name, ModTime: f.ModTime, Data: f.Data})
80 if f.Name == "Chart.yaml" {
81 if c.Metadata == nil {
82 c.Metadata = new(chart.Metadata)
83 }
84 if err := yaml.Unmarshal(f.Data, c.Metadata); err != nil {
85 return c, fmt.Errorf("cannot load Chart.yaml: %w", err)
86 }
87 // NOTE(bacongobbler): while the chart specification says that APIVersion must be set,
88 // Helm 2 accepted charts that did not provide an APIVersion in their chart metadata.
89 // Because of that, if APIVersion is unset, we should assume we're loading a v1 chart.
90 if c.Metadata.APIVersion == "" {
91 c.Metadata.APIVersion = chart.APIVersionV1
92 }
93 c.ModTime = f.ModTime
94 }
95 }
96 for _, f := range files {
97 switch {
98 case f.Name == "Chart.yaml":
99 // already processed
100 continue
101 case f.Name == "Chart.lock":
102 c.Lock = new(chart.Lock)
103 if err := yaml.Unmarshal(f.Data, &c.Lock); err != nil {
104 return c, fmt.Errorf("cannot load Chart.lock: %w", err)
105 }
106 case f.Name == "values.yaml":
107 values, err := LoadValues(bytes.NewReader(f.Data))
108 if err != nil {
109 return c, fmt.Errorf("cannot load values.yaml: %w", err)
110 }
111 c.Values = values
112 case f.Name == "values.schema.json":
113 c.Schema = f.Data
114 c.SchemaModTime = f.ModTime
115
116 // Deprecated: requirements.yaml is deprecated use Chart.yaml.
117 // We will handle it for you because we are nice people
118 case f.Name == "requirements.yaml":
119 if c.Metadata == nil {
120 c.Metadata = new(chart.Metadata)
121 }
122 if c.Metadata.APIVersion != chart.APIVersionV1 {
123 log.Print("Warning: Dependencies are handled in Chart.yaml since apiVersion \"v2\". We recommend migrating dependencies to Chart.yaml.")
124 }
125 if err := yaml.Unmarshal(f.Data, c.Metadata); err != nil {
126 return c, fmt.Errorf("cannot load requirements.yaml: %w", err)
127 }
128 if c.Metadata.APIVersion == chart.APIVersionV1 {
129 c.Files = append(c.Files, &common.File{Name: f.Name, ModTime: f.ModTime, Data: f.Data})

Callers 5

LoadArchiveFunction · 0.70
TestLoadFiles_BadCasesFunction · 0.70
TestLoadFilesFunction · 0.70
TestLoadFilesOrderFunction · 0.70
LoadDirFunction · 0.70

Calls 5

LoadValuesFunction · 0.70
LoadArchiveFunction · 0.70
ValidateMethod · 0.65
NameMethod · 0.65
AddDependencyMethod · 0.45

Tested by 3

TestLoadFiles_BadCasesFunction · 0.56
TestLoadFilesFunction · 0.56
TestLoadFilesOrderFunction · 0.56

Used in the wild real call sites across dependent graphs

searching dependent graphs…