mirror of
https://github.com/go-task/task.git
synced 2025-02-03 13:22:11 +02:00
Support Windows
If "sh" is available (Git bash) it is used. Otherwise "cmd" is used.
This commit is contained in:
parent
a441fea849
commit
49d4901c76
31
task.go
31
task.go
@ -15,10 +15,21 @@ import (
|
||||
var (
|
||||
CurrentDirectory, _ = osext.ExecutableFolder()
|
||||
TaskFilePath = filepath.Join(CurrentDirectory, "Taskfile.yml")
|
||||
ShExists bool
|
||||
ShPath string
|
||||
|
||||
Tasks = make(map[string]*Task)
|
||||
)
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
ShPath, err = exec.LookPath("sh")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ShExists = true
|
||||
}
|
||||
|
||||
type Task struct {
|
||||
Cmds []string
|
||||
Deps []string
|
||||
@ -81,12 +92,24 @@ func RunTask(name string) error {
|
||||
}
|
||||
|
||||
for _, c := range t.Cmds {
|
||||
cmd := exec.Command("/bin/sh", "-c", c)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
if err := runCommand(c); err != nil {
|
||||
return &TaskRunError{name, err}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runCommand(c string) error {
|
||||
var cmd *exec.Cmd
|
||||
if ShExists {
|
||||
cmd = exec.Command(ShPath, "-c", c)
|
||||
} else {
|
||||
cmd = exec.Command("cmd", "/C", c)
|
||||
}
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user