package main import ( "context" "os" "os/signal" "syscall" "codeberg.org/forgejo/runner/cmd" ) func withContextFunc(ctx context.Context, f func()) context.Context { ctx, cancel := context.WithCancel(ctx) go func() { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) defer signal.Stop(c) select { case <-ctx.Done(): case <-c: cancel() f() } }() return ctx } func main() { ctx := withContextFunc(context.Background(), func() {}) // run the command cmd.Execute(ctx) }