File tree 2 files changed +25
-3
lines changed 2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change 1
1
package main
2
2
3
3
import (
4
- "fmt "
4
+ "context "
5
5
"log"
6
6
"os"
7
+ "os/signal"
8
+ "syscall"
7
9
8
10
"github.com/go-task/task"
9
11
"github.com/go-task/task/internal/args"
@@ -37,9 +39,10 @@ Options:
37
39
38
40
func main () {
39
41
log .SetFlags (0 )
42
+ log .SetOutput (os .Stderr )
40
43
41
44
pflag .Usage = func () {
42
- fmt .Print (usage )
45
+ log .Print (usage )
43
46
pflag .PrintDefaults ()
44
47
}
45
48
@@ -87,6 +90,8 @@ func main() {
87
90
Silent : silent ,
88
91
Dir : dir ,
89
92
93
+ Context : getSignalContext (),
94
+
90
95
Stdin : os .Stdin ,
91
96
Stdout : os .Stdout ,
92
97
Stderr : os .Stderr ,
@@ -115,3 +120,15 @@ func main() {
115
120
log .Fatal (err )
116
121
}
117
122
}
123
+
124
+ func getSignalContext () context.Context {
125
+ ch := make (chan os.Signal , 1 )
126
+ signal .Notify (ch , os .Interrupt , os .Kill , syscall .SIGTERM )
127
+ ctx , cancel := context .WithCancel (context .Background ())
128
+ go func () {
129
+ sig := <- ch
130
+ log .Printf ("task: signal received: %s" , sig )
131
+ cancel ()
132
+ }()
133
+ return ctx
134
+ }
Original file line number Diff line number Diff line change @@ -30,6 +30,8 @@ type Executor struct {
30
30
Verbose bool
31
31
Silent bool
32
32
33
+ Context context.Context
34
+
33
35
Stdin io.Reader
34
36
Stdout io.Writer
35
37
Stderr io.Writer
@@ -63,6 +65,9 @@ type Task struct {
63
65
64
66
// Run runs Task
65
67
func (e * Executor ) Run (calls ... Call ) error {
68
+ if e .Context == nil {
69
+ e .Context = context .Background ()
70
+ }
66
71
if e .Stdin == nil {
67
72
e .Stdin = os .Stdin
68
73
}
@@ -96,7 +101,7 @@ func (e *Executor) Run(calls ...Call) error {
96
101
}
97
102
98
103
for _ , c := range calls {
99
- if err := e .RunTask (context . TODO () , c ); err != nil {
104
+ if err := e .RunTask (e . Context , c ); err != nil {
100
105
return err
101
106
}
102
107
}
You can’t perform that action at this time.
0 commit comments