close.go 447 B

1234567891011121314151617181920212223242526
  1. package utils
  2. import (
  3. "os"
  4. "os/signal"
  5. "syscall"
  6. "github.com/fatih/color"
  7. )
  8. func closeHandler(closer func() error) {
  9. sig := make(chan os.Signal)
  10. signal.Notify(sig, os.Interrupt, syscall.SIGTERM)
  11. go func() {
  12. <-sig
  13. err := closer()
  14. if err == nil {
  15. color.New(color.FgRed).Println("shutdown successful")
  16. os.Exit(0)
  17. }
  18. color.New(color.FgRed).Fprintf(os.Stderr, "shutdown unsuccessful: %s\n", err.Error())
  19. os.Exit(1)
  20. }()
  21. }