Monorepo for Tangled tangled.org
6

Configure Feed

Select the types of activity you want to include in your feed.

1package models 2 3import ( 4 "strings" 5 6 "github.com/go-git/go-git/v5/plumbing" 7 "tangled.org/core/api/tangled" 8 "tangled.org/core/workflow" 9) 10 11// PipelineEnvVars extracts environment variables from pipeline trigger metadata. 12// These are framework-provided variables that are injected into workflow steps. 13func PipelineEnvVars(tr *tangled.Pipeline_TriggerMetadata, pipelineId PipelineId, devMode bool) map[string]string { 14 if tr == nil { 15 return nil 16 } 17 18 env := make(map[string]string) 19 20 // Standard CI environment variable 21 env["CI"] = "true" 22 23 env["TANGLED_PIPELINE_ID"] = pipelineId.AtUri().String() 24 env["TANGLED_PIPELINE_KIND"] = tr.Kind 25 26 // Repo info 27 if tr.Repo != nil { 28 env["TANGLED_REPO_KNOT"] = tr.Repo.Knot 29 env["TANGLED_REPO_DID"] = tr.Repo.Did 30 if tr.Repo.Repo != nil { 31 env["TANGLED_REPO_NAME"] = *tr.Repo.Repo 32 } 33 if tr.Repo.RepoDid != nil { 34 env["TANGLED_REPO_REPO_DID"] = *tr.Repo.RepoDid 35 } 36 env["TANGLED_REPO_DEFAULT_BRANCH"] = tr.Repo.DefaultBranch 37 env["TANGLED_REPO_URL"] = BuildRepoURL(tr.Repo, devMode) 38 } 39 40 switch workflow.TriggerKind(tr.Kind) { 41 case workflow.TriggerKindPush: 42 if tr.Push != nil { 43 refName := plumbing.ReferenceName(tr.Push.Ref) 44 refType := "branch" 45 if refName.IsTag() { 46 refType = "tag" 47 } 48 49 env["TANGLED_REF"] = tr.Push.Ref 50 env["TANGLED_REF_NAME"] = refName.Short() 51 env["TANGLED_REF_TYPE"] = refType 52 env["TANGLED_SHA"] = tr.Push.NewSha 53 env["TANGLED_COMMIT_SHA"] = tr.Push.NewSha 54 } 55 56 case workflow.TriggerKindPullRequest: 57 if tr.PullRequest != nil { 58 // For PRs, the "ref" is the source branch 59 env["TANGLED_REF"] = "refs/heads/" + tr.PullRequest.SourceBranch 60 env["TANGLED_REF_NAME"] = tr.PullRequest.SourceBranch 61 env["TANGLED_REF_TYPE"] = "branch" 62 env["TANGLED_SHA"] = tr.PullRequest.SourceSha 63 env["TANGLED_COMMIT_SHA"] = tr.PullRequest.SourceSha 64 65 // PR-specific variables 66 env["TANGLED_PR_SOURCE_BRANCH"] = tr.PullRequest.SourceBranch 67 env["TANGLED_PR_TARGET_BRANCH"] = tr.PullRequest.TargetBranch 68 env["TANGLED_PR_SOURCE_SHA"] = tr.PullRequest.SourceSha 69 env["TANGLED_PR_ACTION"] = tr.PullRequest.Action 70 } 71 72 case workflow.TriggerKindManual: 73 // Manual triggers may not have ref/sha info 74 // Include any manual inputs if present 75 if tr.Manual != nil { 76 for _, pair := range tr.Manual.Inputs { 77 env["TANGLED_INPUT_"+strings.ToUpper(pair.Key)] = pair.Value 78 } 79 } 80 } 81 82 return env 83}