@@ -2,11 +2,14 @@ package cmd
22
33import (
44 "fmt"
5+ "io/ioutil"
56 "os"
67 "path/filepath"
78 "strconv"
89 "strings"
910
11+ "github.com/covexo/devspace/pkg/util/yamlutil"
12+
1013 helmClient "github.com/covexo/devspace/pkg/devspace/clients/helm"
1114 "github.com/covexo/devspace/pkg/devspace/clients/kubectl"
1215 "github.com/covexo/devspace/pkg/devspace/config/configutil"
@@ -175,9 +178,6 @@ func (cmd *AddCmd) RunAddPackage(cobraCmd *cobra.Command, args []string) {
175178 }
176179
177180 log .Done ("Chart found" )
178- entry := "- name: \" " + version .GetName () + "\" \n " +
179- " version: \" " + version .GetVersion () + "\" \n " +
180- " repository: \" " + repo .URL + "\" \n "
181181
182182 cwd , err := os .Getwd ()
183183 if err != nil {
@@ -188,22 +188,45 @@ func (cmd *AddCmd) RunAddPackage(cobraCmd *cobra.Command, args []string) {
188188
189189 _ , err = os .Stat (requirementsFile )
190190 if os .IsNotExist (err ) {
191- entry = "dependencies:\n " + entry
192- }
191+ entry := "dependencies:\n " +
192+ "- name: \" " + version .GetName () + "\" \n " +
193+ " version: \" " + version .GetVersion () + "\" \n " +
194+ " repository: \" " + repo .URL + "\" \n "
193195
194- f , err := os .OpenFile (requirementsFile , os .O_APPEND | os .O_WRONLY | os .O_CREATE , 0600 )
195- if err != nil {
196- log .Fatal (err )
197- }
196+ err = ioutil .WriteFile (requirementsFile , []byte (entry ), 0600 )
197+ if err != nil {
198+ log .Fatal (err )
199+ }
200+ } else {
201+ yamlContents := map [interface {}]interface {}{}
202+ err = yamlutil .ReadYamlFromFile (requirementsFile , yamlContents )
203+ if err != nil {
204+ log .Fatalf ("Error parsing %s: %v" , requirementsFile , err )
205+ }
198206
199- defer f .Close ()
207+ dependenciesArr := []interface {}{}
208+ if dependencies , ok := yamlContents ["dependencies" ]; ok {
209+ dependenciesArr , ok = dependencies .([]interface {})
210+ if ok == false {
211+ log .Fatalf ("Error parsing %s: Key dependencies is not an array" , requirementsFile )
212+ }
213+ }
200214
201- if _ , err = f .WriteString (entry ); err != nil {
202- log .Fatal (err )
215+ dependenciesArr = append (dependenciesArr , map [interface {}]interface {}{
216+ "name" : version .GetName (),
217+ "version" : version .GetVersion (),
218+ "repository" : repo .URL ,
219+ })
220+ yamlContents ["dependencies" ] = dependenciesArr
221+
222+ err = yamlutil .WriteYamlToFile (yamlContents , requirementsFile )
223+ if err != nil {
224+ log .Fatal (err )
225+ }
203226 }
204227
205- log .StartWait ("Building chart" )
206- err = helm .BuildDependencies (filepath .Join (cwd , "chart" ))
228+ log .StartWait ("Update chart dependencies " )
229+ err = helm .UpdateDependencies (filepath .Join (cwd , "chart" ))
207230 log .StopWait ()
208231
209232 if err != nil {
0 commit comments