@@ -18,7 +18,6 @@ package cmd
18
18
import (
19
19
"fmt"
20
20
"os"
21
- "unsafe"
22
21
23
22
"github.com/spf13/cobra"
24
23
@@ -36,12 +35,15 @@ import (
36
35
)
37
36
38
37
var (
39
- cfgFile string
40
- cfg * config.Config
41
- providers []* types.Provider
42
- backend state.Backender
43
- activeState * state.State
44
- verbose bool
38
+ cfgFile string
39
+ cfg * config.Config
40
+ providers []* types.Provider
41
+ backend state.Backender
42
+ activeState * state.State
43
+ verbose bool
44
+ disableStop bool
45
+ disableResume bool
46
+ disableDestroy bool
45
47
)
46
48
47
49
// rootCmd represents the base command when called without any subcommands
@@ -56,12 +58,9 @@ var rootCmd = &cobra.Command{
56
58
config .LoadConfig ()
57
59
58
60
cfg = config .GetConfig ()
59
-
60
- for _ , rule := range cfg .Rules {
61
- // Convert Rule in config to rules.Rule type
62
- r := * ((* rules .Rule )(unsafe .Pointer (& rule )))
63
- r .Tags = resource .Tags (rule .Tags )
64
- rules .ParseRule (r )
61
+ err := rules .LoadRules ()
62
+ if err != nil {
63
+ log .Fatal (err )
65
64
}
66
65
67
66
// Initialize Provider objects
@@ -72,20 +71,26 @@ var rootCmd = &cobra.Command{
72
71
for _ , p := range providers {
73
72
res := activeState .Current [p .Name ]
74
73
75
- stoppableResources := p .GetStoppableResources (res )
76
- fmt .Println ("Stoppable Resources: " , stoppableResources )
77
- errs := p .StopResources (stoppableResources )
78
- fmt .Println ("Errors Stopping Resources: " , errs )
74
+ if ! disableStop {
75
+ stoppableResources := p .GetStoppableResources (res )
76
+ fmt .Println ("Stoppable Resources: " , stoppableResources )
77
+ errs := p .StopResources (stoppableResources )
78
+ logErrors (errs )
79
+ }
79
80
80
- resumableResources := p .GetResumableResources (res )
81
- fmt .Println ("Resumable Resources: " , resumableResources )
82
- errs = p .ResumeResources (resumableResources )
83
- fmt .Println ("Errors Resuming Resources: " , errs )
81
+ if ! disableResume {
82
+ resumableResources := p .GetResumableResources (res )
83
+ fmt .Println ("Resumable Resources: " , resumableResources )
84
+ errs := p .ResumeResources (resumableResources )
85
+ logErrors (errs )
86
+ }
84
87
85
- destroyableResources := p .GetDestroyableResources (res )
86
- fmt .Println ("Destroyable Resources: " , destroyableResources )
87
- errs = p .DestroyResources (destroyableResources )
88
- fmt .Println ("Errors Destroying Resources: " , errs )
88
+ if ! disableDestroy {
89
+ destroyableResources := p .GetDestroyableResources (res )
90
+ fmt .Println ("Destroyable Resources: " , destroyableResources )
91
+ errs := p .DestroyResources (destroyableResources )
92
+ logErrors (errs )
93
+ }
89
94
}
90
95
},
91
96
}
@@ -104,6 +109,9 @@ func init() {
104
109
rootCmd .PersistentFlags ().StringVar (& cfgFile , "config" , "" , "config file (default is $HOME/.reka.yaml)" )
105
110
rootCmd .Flags ().BoolP ("unused-only" , "t" , false , "Reap only unused resources" )
106
111
rootCmd .PersistentFlags ().BoolVarP (& verbose , "verbose" , "v" , false , "Output verbose logs (DEBUG)" )
112
+ rootCmd .Flags ().BoolVar (& disableStop , "disable-stop" , false , "Disable stopping of resources" )
113
+ rootCmd .Flags ().BoolVar (& disableResume , "disable-resume" , false , "Disable resuming of resources" )
114
+ rootCmd .Flags ().BoolVar (& disableDestroy , "disable-destroy" , false , "Disable destruction of resources" )
107
115
}
108
116
109
117
// initConfig reads in config file and ENV variables if set.
@@ -201,3 +209,9 @@ func containsResource(res []*resource.Resource, r *resource.Resource) bool {
201
209
}
202
210
return false
203
211
}
212
+
213
+ func logErrors (errs map [string ]error ) {
214
+ for k , v := range errs {
215
+ log .Errorf ("%s: %s" , k , v .Error ())
216
+ }
217
+ }
0 commit comments