Graceful is Go package for signal trapping based on context.
package main
import (
"context"
"log"
"syscall"
"github.com/closer/graceful"
)
func main() {
log.Println("Starting up...")
ctx := graceful.WithTrap(
context.Background(),
syscall.SIGINT,
syscall.SIGTERM,
)
if err := Worker(ctx); err != nil {
log.Fatal("Worker error", err)
}
log.Println("Shutting down...")
}