Skip to content

Commit

Permalink
Merge pull request #975 from marwan-at-work/fixctx
Browse files Browse the repository at this point in the history
add RunWithContext + remove signal cancellation
  • Loading branch information
AudriusButkevicius committed Dec 6, 2019
2 parents 72c7fac + 7daa2d1 commit 0fae425
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
10 changes: 9 additions & 1 deletion app.go
@@ -1,6 +1,7 @@
package cli

import (
"context"
"flag"
"fmt"
"io"
Expand Down Expand Up @@ -207,6 +208,13 @@ func (a *App) useShortOptionHandling() bool {
// Run is the entry point to the cli app. Parses the arguments slice and routes
// to the proper flag/args combination
func (a *App) Run(arguments []string) (err error) {
return a.RunContext(context.Background(), arguments)
}

// RunContext is like Run except it takes a Context that will be
// passed to its commands and sub-commands. Through this, you can
// propagate timeouts and cancellation requests
func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
a.Setup()

// handle the completion flag separately from the flagset since
Expand All @@ -224,7 +232,7 @@ func (a *App) Run(arguments []string) (err error) {

err = parseIter(set, a, arguments[1:], shellComplete)
nerr := normalizeFlags(a.Flags, set)
context := NewContext(a, set, nil)
context := NewContext(a, set, &Context{Context: ctx})
if nerr != nil {
_, _ = fmt.Fprintln(a.Writer, nerr)
_ = ShowAppHelp(context)
Expand Down
12 changes: 1 addition & 11 deletions context.go
Expand Up @@ -5,10 +5,7 @@ import (
"errors"
"flag"
"fmt"
"os"
"os/signal"
"strings"
"syscall"
)

// Context is a type that is passed through to
Expand Down Expand Up @@ -36,14 +33,7 @@ func NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context {
c.Command = &Command{}

if c.Context == nil {
ctx, cancel := context.WithCancel(context.Background())
go func() {
defer cancel()
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
<-sigs
}()
c.Context = ctx
c.Context = context.Background()
}

return c
Expand Down

0 comments on commit 0fae425

Please sign in to comment.