()
| 12 | ) |
| 13 | |
| 14 | func main() { |
| 15 | c := make(chan os.Signal) |
| 16 | signal.Notify(c, os.Interrupt, os.Kill) |
| 17 | |
| 18 | var once sync.Once |
| 19 | |
| 20 | go func() { |
| 21 | for { |
| 22 | sig := <-c |
| 23 | once.Do(commands.Cleanup) |
| 24 | fmt.Fprintf(os.Stderr, "\n%s\n", tr.Tr.Get("Exiting because of %q signal.", sig)) |
| 25 | |
| 26 | exitCode := 1 |
| 27 | if sysSig, ok := sig.(syscall.Signal); ok { |
| 28 | exitCode = int(sysSig) |
| 29 | } |
| 30 | os.Exit(exitCode + 128) |
| 31 | } |
| 32 | }() |
| 33 | |
| 34 | code := commands.Run() |
| 35 | once.Do(commands.Cleanup) |
| 36 | os.Exit(code) |
| 37 | } |