mirror of
https://github.com/go-task/task.git
synced 2025-06-27 00:51:05 +02:00
@ -1,9 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"context"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"github.com/go-task/task"
|
"github.com/go-task/task"
|
||||||
"github.com/go-task/task/internal/args"
|
"github.com/go-task/task/internal/args"
|
||||||
@ -37,9 +39,10 @@ Options:
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(0)
|
log.SetFlags(0)
|
||||||
|
log.SetOutput(os.Stderr)
|
||||||
|
|
||||||
pflag.Usage = func() {
|
pflag.Usage = func() {
|
||||||
fmt.Print(usage)
|
log.Print(usage)
|
||||||
pflag.PrintDefaults()
|
pflag.PrintDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +90,8 @@ func main() {
|
|||||||
Silent: silent,
|
Silent: silent,
|
||||||
Dir: dir,
|
Dir: dir,
|
||||||
|
|
||||||
|
Context: getSignalContext(),
|
||||||
|
|
||||||
Stdin: os.Stdin,
|
Stdin: os.Stdin,
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stderr,
|
Stderr: os.Stderr,
|
||||||
@ -115,3 +120,15 @@ func main() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getSignalContext() context.Context {
|
||||||
|
ch := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(ch, os.Interrupt, os.Kill, syscall.SIGTERM)
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
go func() {
|
||||||
|
sig := <-ch
|
||||||
|
log.Printf("task: signal received: %s", sig)
|
||||||
|
cancel()
|
||||||
|
}()
|
||||||
|
return ctx
|
||||||
|
}
|
||||||
|
7
task.go
7
task.go
@ -30,6 +30,8 @@ type Executor struct {
|
|||||||
Verbose bool
|
Verbose bool
|
||||||
Silent bool
|
Silent bool
|
||||||
|
|
||||||
|
Context context.Context
|
||||||
|
|
||||||
Stdin io.Reader
|
Stdin io.Reader
|
||||||
Stdout io.Writer
|
Stdout io.Writer
|
||||||
Stderr io.Writer
|
Stderr io.Writer
|
||||||
@ -63,6 +65,9 @@ type Task struct {
|
|||||||
|
|
||||||
// Run runs Task
|
// Run runs Task
|
||||||
func (e *Executor) Run(calls ...Call) error {
|
func (e *Executor) Run(calls ...Call) error {
|
||||||
|
if e.Context == nil {
|
||||||
|
e.Context = context.Background()
|
||||||
|
}
|
||||||
if e.Stdin == nil {
|
if e.Stdin == nil {
|
||||||
e.Stdin = os.Stdin
|
e.Stdin = os.Stdin
|
||||||
}
|
}
|
||||||
@ -96,7 +101,7 @@ func (e *Executor) Run(calls ...Call) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range calls {
|
for _, c := range calls {
|
||||||
if err := e.RunTask(context.TODO(), c); err != nil {
|
if err := e.RunTask(e.Context, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user