1
0
mirror of https://github.com/go-task/task.git synced 2025-08-08 22:36:57 +02:00
This commit is contained in:
Valentin Maerten
2025-01-05 10:42:34 +01:00
parent 08bd0d982a
commit d3e0fc9eea
2 changed files with 22 additions and 9 deletions

View File

@ -4,12 +4,10 @@ import (
"fmt"
"sync"
"github.com/go-task/task/v3/errors"
"github.com/go-task/task/v3/internal/deepcopy"
"gopkg.in/yaml.v3"
"github.com/go-task/task/v3/errors"
)
// Precondition represents a precondition necessary for a task to run
@ -25,6 +23,12 @@ type (
}
)
func NewPreconditions() *Preconditions {
return &Preconditions{
Preconditions: make([]*Precondition, 0),
}
}
func (p *Preconditions) DeepCopy() *Preconditions {
if p == nil {
return nil
@ -46,12 +50,6 @@ func (p *Precondition) DeepCopy() *Precondition {
}
}
func NewPreconditions() *Preconditions {
return &Preconditions{
Preconditions: make([]*Precondition, 0),
}
}
// UnmarshalYAML implements yaml.Unmarshaler interface.
func (p *Precondition) UnmarshalYAML(node *yaml.Node) error {
switch node.Kind {

View File

@ -1019,6 +1019,21 @@ tasks:
- echo "I will not run"
```
They can be defined at two levels:
- Global Level: Applies to all tasks.
- Task Level: Applies only to a specific task.
```yaml
version: '3'
preconditions:
- sh: 'exit 1'
tasks:
task-will-fail: echo "I will not run"
```
### Limiting when tasks run
If a task executed by multiple `cmds` or multiple `deps` you can control when it