From e54de3724292fa3fc4a50f1e1186964ce1e7a816 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Wed, 13 Jul 2022 13:44:14 +0800 Subject: [PATCH] refactor: Add graceful shutdown signal notify func --- main.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 47349b0..333e615 100644 --- a/main.go +++ b/main.go @@ -9,25 +9,26 @@ import ( "gitea.com/gitea/act_runner/cmd" ) -func main() { - ctx := context.Background() +func withContextFunc(ctx context.Context, f func()) context.Context { ctx, cancel := context.WithCancel(ctx) - - // trap Ctrl+C and call cancel on the context - c := make(chan os.Signal, 1) - signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) - defer func() { - signal.Stop(c) - cancel() - }() 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() - case <-ctx.Done(): + f() } }() + return ctx +} + +func main() { + ctx := withContextFunc(context.Background(), func() {}) // run the command cmd.Execute(ctx) }