diff options
Diffstat (limited to 'cli/internal/nodes')
| -rw-r--r-- | cli/internal/nodes/packagetask.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/cli/internal/nodes/packagetask.go b/cli/internal/nodes/packagetask.go new file mode 100644 index 0000000..e2dcb27 --- /dev/null +++ b/cli/internal/nodes/packagetask.go @@ -0,0 +1,45 @@ +// Package nodes defines the nodes that are present in the execution graph used by turbo. +package nodes + +import ( + "fmt" + + "github.com/vercel/turbo/cli/internal/fs" + "github.com/vercel/turbo/cli/internal/util" +) + +// PackageTask represents running a particular task in a particular package +type PackageTask struct { + TaskID string + Task string + PackageName string + Pkg *fs.PackageJSON + EnvMode util.EnvMode + TaskDefinition *fs.TaskDefinition + Dir string + Command string + Outputs []string + ExcludedOutputs []string + LogFile string + Hash string +} + +// OutputPrefix returns the prefix to be used for logging and ui for this task +func (pt *PackageTask) OutputPrefix(isSinglePackage bool) string { + if isSinglePackage { + return pt.Task + } + return fmt.Sprintf("%v:%v", pt.PackageName, pt.Task) +} + +// HashableOutputs returns the package-relative globs for files to be considered outputs +// of this task +func (pt *PackageTask) HashableOutputs() fs.TaskOutputs { + inclusionOutputs := []string{fmt.Sprintf(".turbo/turbo-%v.log", pt.Task)} + inclusionOutputs = append(inclusionOutputs, pt.TaskDefinition.Outputs.Inclusions...) + + return fs.TaskOutputs{ + Inclusions: inclusionOutputs, + Exclusions: pt.TaskDefinition.Outputs.Exclusions, + } +} |
