mirror of
https://github.com/go-task/task.git
synced 2025-02-03 13:22:11 +02:00
execext package: support context command
This commit is contained in:
parent
947b3de0c4
commit
822f7f83ee
@ -1,6 +1,7 @@
|
||||
package execext
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
@ -17,6 +18,6 @@ func init() {
|
||||
ShExists = err == nil
|
||||
}
|
||||
|
||||
func newShCommand(c string) *exec.Cmd {
|
||||
return exec.Command(ShPath, "-c", c)
|
||||
func newShCommand(ctx context.Context, c string) *exec.Cmd {
|
||||
return exec.CommandContext(ctx, ShPath, "-c", c)
|
||||
}
|
||||
|
@ -3,11 +3,12 @@
|
||||
package execext
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
// NewCommand returns a new command that runs on "sh" is available or on "cmd"
|
||||
// otherwise on Windows
|
||||
func NewCommand(c string) *exec.Cmd {
|
||||
return newShCommand(c)
|
||||
func NewCommand(ctx context.Context, c string) *exec.Cmd {
|
||||
return newShCommand(ctx, c)
|
||||
}
|
||||
|
@ -3,18 +3,19 @@
|
||||
package execext
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
// NewCommand returns a new command that runs on "sh" is available or on "cmd"
|
||||
// otherwise on Windows
|
||||
func NewCommand(c string) *exec.Cmd {
|
||||
func NewCommand(ctx context.Context, c string) *exec.Cmd {
|
||||
if ShExists {
|
||||
return newShCommand(c)
|
||||
return newShCommand(ctx, c)
|
||||
}
|
||||
return newCmdCommand(c)
|
||||
return newCmdCommand(ctx, c)
|
||||
}
|
||||
|
||||
func newCmdCommand(c string) *exec.Cmd {
|
||||
return exec.Command("cmd", "/C", c)
|
||||
func newCmdCommand(ctx context.Context, c string) *exec.Cmd {
|
||||
return exec.CommandContext(ctx, "cmd", "/C", c)
|
||||
}
|
||||
|
3
task.go
3
task.go
@ -1,6 +1,7 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
@ -189,7 +190,7 @@ func (t *Task) runCommand(i int) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cmd := execext.NewCommand(c)
|
||||
cmd := execext.NewCommand(context.Background(), c)
|
||||
if dir != "" {
|
||||
cmd.Dir = dir
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package task
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
@ -32,7 +33,7 @@ func handleDynamicVariableContent(value string) (string, error) {
|
||||
if result, ok := varCmds[value]; ok {
|
||||
return result, nil
|
||||
}
|
||||
cmd := execext.NewCommand(value[1:])
|
||||
cmd := execext.NewCommand(context.Background(), value[1:])
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stderr = os.Stderr
|
||||
b, err := cmd.Output()
|
||||
|
Loading…
x
Reference in New Issue
Block a user