@@ -50,16 +50,18 @@ func (c *client) InstallChart(ctx *devspacecontext.Context, releaseName string,
5050 }
5151
5252 // Chart settings
53+ chartName := ""
5354 if helmConfig .Chart .Source != nil {
54- chartName , err : = dependencyutil .DownloadDependency (ctx .Context , ctx .WorkingDir , helmConfig .Chart .Source , ctx .Log )
55+ chartName , err = dependencyutil .DownloadDependency (ctx .Context , ctx .WorkingDir , helmConfig .Chart .Source , ctx .Log )
5556 if err != nil {
5657 return nil , err
5758 }
5859
5960 chartName = filepath .Dir (chartName )
6061 args = append (args , chartName )
6162 } else {
62- chartName , chartRepo := generic .ChartNameAndRepo (helmConfig )
63+ var chartRepo string
64+ chartName , chartRepo = generic .ChartNameAndRepo (helmConfig )
6365 args = append (args , chartName )
6466 if chartRepo != "" {
6567 args = append (args , "--repo" , chartRepo )
@@ -76,6 +78,15 @@ func (c *client) InstallChart(ctx *devspacecontext.Context, releaseName string,
7678 }
7779 }
7880
81+ // Update dependencies if needed
82+ stat , err := os .Stat (chartName )
83+ if err == nil && stat .IsDir () {
84+ _ , err := c .genericHelm .Exec (ctx .WithWorkingDir (chartName ), []string {"dependency" , "update" })
85+ if err != nil {
86+ ctx .Log .Warnf ("error running helm dependency update: %v" , err )
87+ }
88+ }
89+
7990 // Upgrade options
8091 args = append (args , helmConfig .UpgradeArgs ... )
8192 output , err := c .genericHelm .Exec (ctx , args )
@@ -103,32 +114,63 @@ func (c *client) InstallChart(ctx *devspacecontext.Context, releaseName string,
103114}
104115
105116func (c * client ) Template (ctx * devspacecontext.Context , releaseName , releaseNamespace string , values map [string ]interface {}, helmConfig * latest.HelmConfig ) (string , error ) {
106- cleanup , chartDir , err := c .genericHelm .FetchChart ( ctx , helmConfig )
117+ valuesFile , err := c .genericHelm .WriteValues ( values )
107118 if err != nil {
108119 return "" , err
109- } else if cleanup {
110- defer os .RemoveAll (filepath .Dir (chartDir ))
111120 }
121+ defer os .Remove (valuesFile )
112122
113123 if releaseNamespace == "" {
114124 releaseNamespace = ctx .KubeClient .Namespace ()
115125 }
116126
117- valuesFile , err := c .genericHelm .WriteValues (values )
118- if err != nil {
119- return "" , err
120- }
121- defer os .Remove (valuesFile )
122-
123127 args := []string {
124128 "template" ,
125129 releaseName ,
126- chartDir ,
127130 "--namespace" ,
128131 releaseNamespace ,
129132 "--values" ,
130133 valuesFile ,
131134 }
135+
136+ // Chart settings
137+ chartName := ""
138+ if helmConfig .Chart .Source != nil {
139+ chartName , err = dependencyutil .DownloadDependency (ctx .Context , ctx .WorkingDir , helmConfig .Chart .Source , ctx .Log )
140+ if err != nil {
141+ return "" , err
142+ }
143+
144+ chartName = filepath .Dir (chartName )
145+ args = append (args , chartName )
146+ } else {
147+ var chartRepo string
148+ chartName , chartRepo = generic .ChartNameAndRepo (helmConfig )
149+ args = append (args , chartName )
150+ if chartRepo != "" {
151+ args = append (args , "--repo" , chartRepo )
152+ args = append (args , "--repository-config=''" )
153+ }
154+ if helmConfig .Chart .Version != "" {
155+ args = append (args , "--version" , helmConfig .Chart .Version )
156+ }
157+ if helmConfig .Chart .Username != "" {
158+ args = append (args , "--username" , helmConfig .Chart .Username )
159+ }
160+ if helmConfig .Chart .Password != "" {
161+ args = append (args , "--password" , helmConfig .Chart .Password )
162+ }
163+ }
164+
165+ // Update dependencies if needed
166+ stat , err := os .Stat (chartName )
167+ if err == nil && stat .IsDir () {
168+ _ , err := c .genericHelm .Exec (ctx .WithWorkingDir (chartName ), []string {"dependency" , "update" })
169+ if err != nil {
170+ ctx .Log .Warnf ("error running helm dependency update: %v" , err )
171+ }
172+ }
173+
132174 args = append (args , helmConfig .TemplateArgs ... )
133175 result , err := c .genericHelm .Exec (ctx , args )
134176 if err != nil {
0 commit comments