File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44 _ "embed"
55 "fmt"
66 "os"
7+ "os/signal"
78 "strings"
89
910 "github.com/chenasraf/sofmani/appconfig"
@@ -112,21 +113,43 @@ func main() {
112113 os .Exit (1 )
113114 }
114115
116+ // Set up signal handling for graceful shutdown
117+ sigChan := make (chan os.Signal , 1 )
118+ signal .Notify (sigChan , os .Interrupt )
119+ interrupted := false
120+
115121 installSummary := summary .NewSummary ()
116122 for _ , i := range instances {
123+ // Check for interrupt before each installer
124+ select {
125+ case <- sigChan :
126+ interrupted = true
127+ logger .Warn ("Interrupted by user" )
128+ default :
129+ }
130+ if interrupted {
131+ break
132+ }
133+
117134 result , err := installer .RunInstaller (cfg , i )
118135 if err != nil {
119136 logger .Error ("%s" , err )
120- os . Exit ( 1 )
137+ break
121138 }
122139 if result != nil {
123140 installSummary .Add (* result )
124141 }
125142 }
143+
126144 // Print summary if enabled (default: true)
127145 showSummary := cfg .Summary == nil || * cfg .Summary
128146 if showSummary {
129147 installSummary .Print ()
130148 }
149+
150+ if interrupted {
151+ logger .Info ("Cancelled" )
152+ os .Exit (130 ) // Standard exit code for SIGINT
153+ }
131154 logger .Info ("Complete" )
132155}
You can’t perform that action at this time.
0 commit comments