1
0
mirror of https://github.com/go-task/task.git synced 2025-02-03 13:22:11 +02:00

rename file.go to status.go, and move related code there

This commit is contained in:
Andrey Nering 2017-07-16 16:15:29 -03:00
parent 72250b32d3
commit dc6cb68327
2 changed files with 43 additions and 41 deletions

View File

@ -1,13 +1,56 @@
package task
import (
"context"
"os"
"path/filepath"
"time"
"github.com/go-task/task/execext"
"github.com/mattn/go-zglob"
)
func (e *Executor) isTaskUpToDate(ctx context.Context, t *Task) (bool, error) {
if len(t.Status) > 0 {
return e.isUpToDateStatus(ctx, t)
}
return e.isUpToDateTimestamp(ctx, t)
}
func (e *Executor) isUpToDateStatus(ctx context.Context, t *Task) (bool, error) {
for _, s := range t.Status {
err := execext.RunCommand(&execext.RunCommandOptions{
Context: ctx,
Command: s,
Dir: e.getTaskDir(t),
Env: e.getEnviron(t),
})
if err != nil {
return false, nil
}
}
return true, nil
}
func (e *Executor) isUpToDateTimestamp(ctx context.Context, t *Task) (bool, error) {
if len(t.Sources) == 0 || len(t.Generates) == 0 {
return false, nil
}
dir := e.getTaskDir(t)
sourcesMaxTime, err := getPatternsMaxTime(dir, t.Sources)
if err != nil || sourcesMaxTime.IsZero() {
return false, nil
}
generatesMinTime, err := getPatternsMinTime(dir, t.Generates)
if err != nil || generatesMinTime.IsZero() {
return false, nil
}
return !generatesMinTime.Before(sourcesMaxTime), nil
}
func minTime(a, b time.Time) time.Time {
if !a.IsZero() && a.Before(b) {
return a

41
task.go
View File

@ -178,47 +178,6 @@ func (e *Executor) runDeps(ctx context.Context, t *Task) error {
return g.Wait()
}
func (e *Executor) isTaskUpToDate(ctx context.Context, t *Task) (bool, error) {
if len(t.Status) > 0 {
return e.isUpToDateStatus(ctx, t)
}
return e.isUpToDateTimestamp(ctx, t)
}
func (e *Executor) isUpToDateStatus(ctx context.Context, t *Task) (bool, error) {
for _, s := range t.Status {
err := execext.RunCommand(&execext.RunCommandOptions{
Context: ctx,
Command: s,
Dir: e.getTaskDir(t),
Env: e.getEnviron(t),
})
if err != nil {
return false, nil
}
}
return true, nil
}
func (e *Executor) isUpToDateTimestamp(ctx context.Context, t *Task) (bool, error) {
if len(t.Sources) == 0 || len(t.Generates) == 0 {
return false, nil
}
dir := e.getTaskDir(t)
sourcesMaxTime, err := getPatternsMaxTime(dir, t.Sources)
if err != nil || sourcesMaxTime.IsZero() {
return false, nil
}
generatesMinTime, err := getPatternsMinTime(dir, t.Generates)
if err != nil || generatesMinTime.IsZero() {
return false, nil
}
return !generatesMinTime.Before(sourcesMaxTime), nil
}
func (e *Executor) runCommand(ctx context.Context, t *Task, call Call, i int) error {
cmd := t.Cmds[i]