mirror of
https://github.com/go-task/task.git
synced 2025-06-23 00:38:19 +02:00
DO nor re-run up-to-date tasks, based on ModTime and given patterns
This commit is contained in:
25
task.go
25
task.go
@ -30,7 +30,7 @@ func init() {
|
||||
type Task struct {
|
||||
Cmds []string
|
||||
Deps []string
|
||||
Source string
|
||||
Sources string
|
||||
Generates string
|
||||
}
|
||||
|
||||
@ -84,6 +84,11 @@ func RunTask(name string) error {
|
||||
return &TaskNotFoundError{name}
|
||||
}
|
||||
|
||||
if isTaskUpToDate(t) {
|
||||
log.Printf(`Task "%s" is up to date`, name)
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, d := range t.Deps {
|
||||
if err := RunTask(d); err != nil {
|
||||
return err
|
||||
@ -98,6 +103,24 @@ func RunTask(name string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func isTaskUpToDate(t *Task) bool {
|
||||
if t.Sources == "" || t.Generates == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
sourcesMaxTime, err := maxTime(t.Sources)
|
||||
if err != nil || sourcesMaxTime.IsZero() {
|
||||
return false
|
||||
}
|
||||
|
||||
generatesMinTime, err := minTime(t.Generates)
|
||||
if err != nil || generatesMinTime.IsZero() {
|
||||
return false
|
||||
}
|
||||
|
||||
return generatesMinTime.After(sourcesMaxTime)
|
||||
}
|
||||
|
||||
func runCommand(c string) error {
|
||||
var cmd *exec.Cmd
|
||||
if ShExists {
|
||||
|
Reference in New Issue
Block a user