aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/nodes
diff options
context:
space:
mode:
Diffstat (limited to 'cli/internal/nodes')
-rw-r--r--cli/internal/nodes/packagetask.go45
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,
+ }
+}