@@ -134,7 +134,20 @@ func CreateChart(projectDir string, opts CreateChartOptions) (*scaffold.Resource
134
134
if err != nil {
135
135
return nil , nil , err
136
136
}
137
- log .Infof ("Created %s/%s/" , HelmChartsDir , c .GetMetadata ().GetName ())
137
+
138
+ relChartPath := filepath .Join (HelmChartsDir , c .GetMetadata ().GetName ())
139
+ absChartPath := filepath .Join (projectDir , relChartPath )
140
+ if err := fetchChartDependencies (absChartPath ); err != nil {
141
+ return nil , nil , err
142
+ }
143
+
144
+ // Reload chart in case dependencies changed
145
+ c , err = chartutil .Load (absChartPath )
146
+ if err != nil {
147
+ return nil , nil , err
148
+ }
149
+
150
+ log .Infof ("Created %s" , relChartPath )
138
151
return r , c , nil
139
152
}
140
153
@@ -159,7 +172,7 @@ func scaffoldChart(destDir, apiVersion, kind string) (*scaffold.Resource, *chart
159
172
return nil , nil , err
160
173
}
161
174
162
- chart , err := chartutil .LoadDir (chartPath )
175
+ chart , err := chartutil .Load (chartPath )
163
176
if err != nil {
164
177
return nil , nil , err
165
178
}
@@ -198,17 +211,7 @@ func fetchChart(destDir string, opts CreateChartOptions) (*scaffold.Resource, *c
198
211
}
199
212
200
213
func createChartFromDisk (destDir , source string , isDir bool ) (* chart.Chart , error ) {
201
- var (
202
- chart * chart.Chart
203
- err error
204
- )
205
-
206
- // If source is a file or directory, attempt to load it
207
- if isDir {
208
- chart , err = chartutil .LoadDir (source )
209
- } else {
210
- chart , err = chartutil .LoadFile (source )
211
- }
214
+ chart , err := chartutil .Load (source )
212
215
if err != nil {
213
216
return nil , err
214
217
}
@@ -265,3 +268,19 @@ func createChartFromRemote(destDir string, opts CreateChartOptions) (*chart.Char
265
268
266
269
return createChartFromDisk (destDir , chartArchive , false )
267
270
}
271
+
272
+ func fetchChartDependencies (chartPath string ) error {
273
+ helmHome , ok := os .LookupEnv (environment .HomeEnvVar )
274
+ if ! ok {
275
+ helmHome = environment .DefaultHelmHome
276
+ }
277
+ getters := getter .All (environment.EnvSettings {})
278
+
279
+ man := & downloader.Manager {
280
+ Out : ioutil .Discard ,
281
+ ChartPath : chartPath ,
282
+ HelmHome : helmpath .Home (helmHome ),
283
+ Getters : getters ,
284
+ }
285
+ return man .Build ()
286
+ }
0 commit comments