@@ -36,75 +36,6 @@ type Leftovers struct {
36
36
resources []resource
37
37
}
38
38
39
- func (l Leftovers ) List (filter string ) {
40
- l .logger .NoConfirm ()
41
-
42
- var deletables []common.Deletable
43
-
44
- for _ , r := range l .resources {
45
- list , err := r .List (filter )
46
- if err != nil {
47
- l .logger .Println (color .YellowString (err .Error ()))
48
- }
49
-
50
- deletables = append (deletables , list ... )
51
- }
52
-
53
- for _ , d := range deletables {
54
- l .logger .Println (fmt .Sprintf ("[%s: %s]" , d .Type (), d .Name ()))
55
- }
56
- }
57
-
58
- // Types will print all of the resource types that can be deleted.
59
- func (l Leftovers ) Types () {
60
- l .logger .NoConfirm ()
61
-
62
- for _ , r := range l .resources {
63
- l .logger .Println (r .Type ())
64
- }
65
- }
66
-
67
- func (l Leftovers ) Delete (filter string ) error {
68
- deletables := [][]common.Deletable {}
69
-
70
- for _ , r := range l .resources {
71
- list , err := r .List (filter )
72
- if err != nil {
73
- l .logger .Println (color .YellowString (err .Error ()))
74
- }
75
-
76
- deletables = append (deletables , list )
77
- }
78
-
79
- var wg sync.WaitGroup
80
-
81
- for _ , list := range deletables {
82
- for _ , d := range list {
83
- wg .Add (1 )
84
-
85
- go func (d common.Deletable ) {
86
- defer wg .Done ()
87
-
88
- l .logger .Println (fmt .Sprintf ("[%s: %s] Deleting..." , d .Type (), d .Name ()))
89
-
90
- if err := d .Delete (); err != nil {
91
- l .logger .Println (fmt .Sprintf ("[%s: %s] %s" , d .Type (), d .Name (), color .YellowString (err .Error ())))
92
- } else {
93
- l .logger .Println (fmt .Sprintf ("[%s: %s] %s" , d .Type (), d .Name (), color .GreenString ("Deleted!" )))
94
- }
95
- }(d )
96
- }
97
-
98
- wg .Wait ()
99
- }
100
-
101
- return nil
102
- }
103
-
104
- func (l Leftovers ) DeleteType (filter , rType string ) error {
105
- return l .Delete (filter )
106
- }
107
-
108
39
func NewLeftovers (logger logger , keyPath string ) (Leftovers , error ) {
109
40
if keyPath == "" {
110
41
return Leftovers {}, errors .New ("Missing service account key path." )
@@ -210,3 +141,92 @@ func NewLeftovers(logger logger, keyPath string) (Leftovers, error) {
210
141
},
211
142
}, nil
212
143
}
144
+
145
+ // List will print all of the resources that match the provided filter.
146
+ func (l Leftovers ) List (filter string ) {
147
+ l .logger .NoConfirm ()
148
+
149
+ var deletables []common.Deletable
150
+
151
+ for _ , r := range l .resources {
152
+ list , err := r .List (filter )
153
+ if err != nil {
154
+ l .logger .Println (color .YellowString (err .Error ()))
155
+ }
156
+
157
+ deletables = append (deletables , list ... )
158
+ }
159
+
160
+ for _ , d := range deletables {
161
+ l .logger .Println (fmt .Sprintf ("[%s: %s]" , d .Type (), d .Name ()))
162
+ }
163
+ }
164
+
165
+ // Types will print all of the resource types that can be deleted.
166
+ func (l Leftovers ) Types () {
167
+ l .logger .NoConfirm ()
168
+
169
+ for _ , r := range l .resources {
170
+ l .logger .Println (r .Type ())
171
+ }
172
+ }
173
+
174
+ func (l Leftovers ) Delete (filter string ) error {
175
+ deletables := [][]common.Deletable {}
176
+
177
+ for _ , r := range l .resources {
178
+ list , err := r .List (filter )
179
+ if err != nil {
180
+ l .logger .Println (color .YellowString (err .Error ()))
181
+ }
182
+
183
+ deletables = append (deletables , list )
184
+ }
185
+
186
+ l .asyncDelete (deletables )
187
+
188
+ return nil
189
+ }
190
+
191
+ func (l Leftovers ) DeleteType (filter , rType string ) error {
192
+ deletables := [][]common.Deletable {}
193
+
194
+ for _ , r := range l .resources {
195
+ if r .Type () == rType {
196
+ list , err := r .List (filter )
197
+ if err != nil {
198
+ l .logger .Println (color .YellowString (err .Error ()))
199
+ }
200
+
201
+ deletables = append (deletables , list )
202
+ }
203
+ }
204
+
205
+ l .asyncDelete (deletables )
206
+
207
+ return nil
208
+ }
209
+
210
+ func (l Leftovers ) asyncDelete (deletables [][]common.Deletable ) {
211
+ var wg sync.WaitGroup
212
+
213
+ for _ , list := range deletables {
214
+ for _ , d := range list {
215
+ wg .Add (1 )
216
+
217
+ go func (d common.Deletable ) {
218
+ defer wg .Done ()
219
+
220
+ l .logger .Println (fmt .Sprintf ("[%s: %s] Deleting..." , d .Type (), d .Name ()))
221
+
222
+ if err := d .Delete (); err != nil {
223
+ l .logger .Println (fmt .Sprintf ("[%s: %s] %s" , d .Type (), d .Name (), color .YellowString (err .Error ())))
224
+ } else {
225
+ l .logger .Println (fmt .Sprintf ("[%s: %s] %s" , d .Type (), d .Name (), color .GreenString ("Deleted!" )))
226
+ }
227
+ }(d )
228
+ }
229
+
230
+ wg .Wait ()
231
+ }
232
+ }
0 commit comments