1
0
mirror of https://github.com/go-task/task.git synced 2025-08-08 22:36:57 +02:00

Fixes panic on task --list

Fixes #99
This commit is contained in:
Andrey Nering
2018-03-11 14:39:40 -03:00
parent 5649f75a8d
commit 120d0be84c
4 changed files with 17 additions and 16 deletions

View File

@@ -98,7 +98,7 @@ func main() {
Stdout: os.Stdout, Stdout: os.Stdout,
Stderr: os.Stderr, Stderr: os.Stderr,
} }
if err := e.ReadTaskfile(); err != nil { if err := e.Setup(); err != nil {
log.Fatal(err) log.Fatal(err)
} }

11
task.go
View File

@@ -52,10 +52,6 @@ type Executor struct {
// Run runs Task // Run runs Task
func (e *Executor) Run(calls ...taskfile.Call) error { func (e *Executor) Run(calls ...taskfile.Call) error {
if err := e.setup(); err != nil {
return err
}
// check if given tasks exist // check if given tasks exist
for _, c := range calls { for _, c := range calls {
if _, ok := e.Taskfile.Tasks[c.Task]; !ok { if _, ok := e.Taskfile.Tasks[c.Task]; !ok {
@@ -77,7 +73,12 @@ func (e *Executor) Run(calls ...taskfile.Call) error {
return nil return nil
} }
func (e *Executor) setup() error { // Setup setups Executor's internal state
func (e *Executor) Setup() error {
if err := e.readTaskfile(); err != nil {
return err
}
v, err := semver.NewVersion(e.Taskfile.Version) v, err := semver.NewVersion(e.Taskfile.Version)
if err != nil { if err != nil {
return fmt.Errorf(`task: could not parse taskfile version "%s": %v`, e.Taskfile.Version, err) return fmt.Errorf(`task: could not parse taskfile version "%s": %v`, e.Taskfile.Version, err)

View File

@@ -38,7 +38,7 @@ func (fct fileContentTest) Run(t *testing.T) {
Stdout: ioutil.Discard, Stdout: ioutil.Discard,
Stderr: ioutil.Discard, Stderr: ioutil.Discard,
} }
assert.NoError(t, e.ReadTaskfile(), "e.ReadTaskfile()") assert.NoError(t, e.Setup(), "e.Setup()")
assert.NoError(t, e.Run(taskfile.Call{Task: fct.Target}), "e.Run(target)") assert.NoError(t, e.Run(taskfile.Call{Task: fct.Target}), "e.Run(target)")
for name, expectContent := range fct.Files { for name, expectContent := range fct.Files {
@@ -176,7 +176,7 @@ func TestVarsInvalidTmpl(t *testing.T) {
Stdout: ioutil.Discard, Stdout: ioutil.Discard,
Stderr: ioutil.Discard, Stderr: ioutil.Discard,
} }
assert.NoError(t, e.ReadTaskfile(), "e.ReadTaskfile()") assert.NoError(t, e.Setup(), "e.Setup()")
assert.EqualError(t, e.Run(taskfile.Call{Task: target}), expectError, "e.Run(target)") assert.EqualError(t, e.Run(taskfile.Call{Task: target}), expectError, "e.Run(target)")
} }
@@ -228,7 +228,7 @@ func TestDeps(t *testing.T) {
Stdout: ioutil.Discard, Stdout: ioutil.Discard,
Stderr: ioutil.Discard, Stderr: ioutil.Discard,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
assert.NoError(t, e.Run(taskfile.Call{Task: "default"})) assert.NoError(t, e.Run(taskfile.Call{Task: "default"}))
for _, f := range files { for _, f := range files {
@@ -256,7 +256,7 @@ func TestStatus(t *testing.T) {
Stderr: &buff, Stderr: &buff,
Silent: true, Silent: true,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
assert.NoError(t, e.Run(taskfile.Call{Task: "gen-foo"})) assert.NoError(t, e.Run(taskfile.Call{Task: "gen-foo"}))
if _, err := os.Stat(file); err != nil { if _, err := os.Stat(file); err != nil {
@@ -295,7 +295,7 @@ func TestGenerates(t *testing.T) {
Stdout: buff, Stdout: buff,
Stderr: buff, Stderr: buff,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
for _, theTask := range []string{relTask, absTask} { for _, theTask := range []string{relTask, absTask} {
var destFile = filepath.Join(dir, theTask) var destFile = filepath.Join(dir, theTask)
@@ -347,7 +347,7 @@ func TestStatusChecksum(t *testing.T) {
Stdout: &buff, Stdout: &buff,
Stderr: &buff, Stderr: &buff,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
assert.NoError(t, e.Run(taskfile.Call{Task: "build"})) assert.NoError(t, e.Run(taskfile.Call{Task: "build"}))
for _, f := range files { for _, f := range files {
@@ -386,7 +386,7 @@ func TestCyclicDep(t *testing.T) {
Stdout: ioutil.Discard, Stdout: ioutil.Discard,
Stderr: ioutil.Discard, Stderr: ioutil.Discard,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
assert.IsType(t, &task.MaximumTaskCallExceededError{}, e.Run(taskfile.Call{Task: "task-1"})) assert.IsType(t, &task.MaximumTaskCallExceededError{}, e.Run(taskfile.Call{Task: "task-1"}))
} }
@@ -406,7 +406,7 @@ func TestTaskVersion(t *testing.T) {
Stdout: ioutil.Discard, Stdout: ioutil.Discard,
Stderr: ioutil.Discard, Stderr: ioutil.Discard,
} }
assert.NoError(t, e.ReadTaskfile()) assert.NoError(t, e.Setup())
assert.Equal(t, test.Version, e.Taskfile.Version) assert.Equal(t, test.Version, e.Taskfile.Version)
assert.Equal(t, 2, len(e.Taskfile.Tasks)) assert.Equal(t, 2, len(e.Taskfile.Tasks))
}) })

View File

@@ -12,8 +12,8 @@ import (
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
) )
// ReadTaskfile parses Taskfile from the disk // readTaskfile parses Taskfile from the disk
func (e *Executor) ReadTaskfile() error { func (e *Executor) readTaskfile() error {
path := filepath.Join(e.Dir, TaskFilePath) path := filepath.Join(e.Dir, TaskFilePath)
var err error var err error