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

feat: can exclude task from being included (#1859)

This commit is contained in:
Valentin Maerten
2024-12-30 10:09:28 +01:00
committed by GitHub
parent 9727eef476
commit 5f1d46c770
8 changed files with 120 additions and 11 deletions

View File

@@ -4,6 +4,7 @@ import (
"gopkg.in/yaml.v3"
"github.com/go-task/task/v3/errors"
"github.com/go-task/task/v3/internal/deepcopy"
omap "github.com/go-task/task/v3/internal/omap"
)
@@ -15,6 +16,7 @@ type Include struct {
Optional bool
Internal bool
Aliases []string
Excludes []string
AdvancedImport bool
Vars *Vars
Flatten bool
@@ -84,6 +86,7 @@ func (include *Include) UnmarshalYAML(node *yaml.Node) error {
Internal bool
Flatten bool
Aliases []string
Excludes []string
Vars *Vars
}
if err := node.Decode(&includedTaskfile); err != nil {
@@ -94,6 +97,7 @@ func (include *Include) UnmarshalYAML(node *yaml.Node) error {
include.Optional = includedTaskfile.Optional
include.Internal = includedTaskfile.Internal
include.Aliases = includedTaskfile.Aliases
include.Excludes = includedTaskfile.Excludes
include.AdvancedImport = true
include.Vars = includedTaskfile.Vars
include.Flatten = includedTaskfile.Flatten
@@ -115,6 +119,7 @@ func (include *Include) DeepCopy() *Include {
Dir: include.Dir,
Optional: include.Optional,
Internal: include.Internal,
Excludes: deepcopy.Slice(include.Excludes),
AdvancedImport: include.AdvancedImport,
Vars: include.Vars.DeepCopy(),
Flatten: include.Flatten,

View File

@@ -56,6 +56,12 @@ func (t1 *Tasks) Merge(t2 Tasks, include *Include, includedTaskfileVars *Vars) e
// taskfile are marked as internal
task.Internal = task.Internal || (include != nil && include.Internal)
taskName := name
// if the task is in the exclude list, don't add it to the merged taskfile and early return
if slices.Contains(include.Excludes, name) {
return nil
}
if !include.Flatten {
// Add namespaces to task dependencies
for _, dep := range task.Deps {

View File

@@ -115,6 +115,7 @@ func (r *Reader) include(node Node) error {
Flatten: include.Flatten,
Aliases: include.Aliases,
AdvancedImport: include.AdvancedImport,
Excludes: include.Excludes,
Vars: include.Vars,
}
if err := cache.Err(); err != nil {