@@ -17,9 +17,10 @@ import (
1717
1818// RemoveCmd holds the information needed for the remove command
1919type RemoveCmd struct {
20- syncFlags * removeSyncCmdFlags
21- portFlags * removePortCmdFlags
22- workdir string
20+ syncFlags * removeSyncCmdFlags
21+ portFlags * removePortCmdFlags
22+ packageFlags * removePackageCmdFlags
23+ workdir string
2324}
2425
2526type removeSyncCmdFlags struct {
@@ -34,10 +35,15 @@ type removePortCmdFlags struct {
3435 RemoveAll bool
3536}
3637
38+ type removePackageCmdFlags struct {
39+ RemoveAll bool
40+ }
41+
3742func init () {
3843 cmd := & RemoveCmd {
39- syncFlags : & removeSyncCmdFlags {},
40- portFlags : & removePortCmdFlags {},
44+ syncFlags : & removeSyncCmdFlags {},
45+ portFlags : & removePortCmdFlags {},
46+ packageFlags : & removePackageCmdFlags {},
4147 }
4248
4349 removeCmd := & cobra.Command {
@@ -123,6 +129,7 @@ func init() {
123129 Run : cmd .RunRemovePackage ,
124130 }
125131
132+ removePackageCmd .Flags ().BoolVar (& cmd .packageFlags .RemoveAll , "all" , false , "Remove all packages" )
126133 removeCmd .AddCommand (removePackageCmd )
127134}
128135
@@ -133,6 +140,10 @@ func (cmd *RemoveCmd) RunRemovePackage(cobraCmd *cobra.Command, args []string) {
133140 log .Fatal (err )
134141 }
135142
143+ if len (args ) == 0 && cmd .packageFlags .RemoveAll == false {
144+ log .Fatal ("You need to specify a package name or the --all flag" )
145+ }
146+
136147 requirementsPath := filepath .Join (cwd , "chart" , "requirements.yaml" )
137148 yamlContents := map [interface {}]interface {}{}
138149
@@ -147,48 +158,72 @@ func (cmd *RemoveCmd) RunRemovePackage(cobraCmd *cobra.Command, args []string) {
147158 log .Fatalf ("Error parsing yaml: %v" , dependencies )
148159 }
149160
150- for key , dependency := range dependenciesArr {
151- dependencyMap , ok := dependency .(map [interface {}]interface {})
152- if ok == false {
153- log .Fatalf ("Error parsing yaml: %v" , dependencies )
154- }
161+ if cmd .packageFlags .RemoveAll == false {
162+ for key , dependency := range dependenciesArr {
163+ dependencyMap , ok := dependency .(map [interface {}]interface {})
164+ if ok == false {
165+ log .Fatalf ("Error parsing yaml: %v" , dependencies )
166+ }
155167
156- if name , ok := dependencyMap ["name" ]; ok {
157- if name == args [0 ] {
158- dependenciesArr = append (dependenciesArr [:key ], dependenciesArr [key + 1 :]... )
159- yamlContents ["dependencies" ] = dependenciesArr
168+ if name , ok := dependencyMap ["name" ]; ok {
169+ if name == args [0 ] {
170+ dependenciesArr = append (dependenciesArr [:key ], dependenciesArr [key + 1 :]... )
171+ yamlContents ["dependencies" ] = dependenciesArr
160172
161- err = yamlutil .WriteYamlToFile (yamlContents , requirementsPath )
162- if err != nil {
163- log .Fatal (err )
164- }
173+ err = yamlutil .WriteYamlToFile (yamlContents , requirementsPath )
174+ if err != nil {
175+ log .Fatal (err )
176+ }
165177
166- // Rebuild dependencies
167- kubectl , err := kubectl .NewClient ()
168- if err != nil {
169- log .Fatalf ("Unable to create new kubectl client: %v" , err )
178+ cmd .rebuildDependencies ()
179+ break
170180 }
181+ }
182+ }
171183
172- helm , err := helmClient .NewClient (kubectl , false )
173- if err != nil {
174- log .Fatalf ("Error initializing helm client: %v" , err )
175- }
176-
177- log .StartWait ("Update chart dependencies" )
178- err = helm .UpdateDependencies (filepath .Join (cwd , "chart" ))
179- log .StopWait ()
180-
181- if err != nil {
182- log .Fatal (err )
183- }
184+ log .Donef ("Successfully removed dependency %s" , args [0 ])
185+ return
186+ } else {
187+ yamlContents ["dependencies" ] = []interface {}{}
184188
185- break
186- }
189+ err = yamlutil .WriteYamlToFile (yamlContents , requirementsPath )
190+ if err != nil {
191+ log .Fatal (err )
187192 }
193+
194+ cmd .rebuildDependencies ()
195+ log .Done ("Successfully removed all dependencies" )
196+ return
188197 }
189198 }
190199
191- log .Donef ("Successfully removed dependency %s" , args [0 ])
200+ log .Done ("No dependencies found" )
201+ }
202+
203+ func (cmd * RemoveCmd ) rebuildDependencies () {
204+ cwd , err := os .Getwd ()
205+ if err != nil {
206+ log .Fatal (err )
207+ }
208+
209+ // Rebuild dependencies
210+ kubectl , err := kubectl .NewClient ()
211+ if err != nil {
212+ log .Fatalf ("Unable to create new kubectl client: %v" , err )
213+ }
214+
215+ helm , err := helmClient .NewClient (kubectl , false )
216+ if err != nil {
217+ log .Fatalf ("Error initializing helm client: %v" , err )
218+ }
219+
220+ log .StartWait ("Update chart dependencies" )
221+ err = helm .UpdateDependencies (filepath .Join (cwd , "chart" ))
222+ log .StopWait ()
223+
224+ if err != nil {
225+ log .Fatal (err )
226+ }
192227}
193228
194229// RunRemoveSync executes the remove sync command logic
0 commit comments