From ebb897da7617686405a5e0781d9eca2958220239 Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sat, 7 Jun 2025 15:43:09 +0200 Subject: [PATCH 1/3] remove version --- src/Terrabuild.Expressions.Tests/Eval.fs | 1 - src/Terrabuild.Expressions/Eval.fs | 2 -- src/Terrabuild/Core/Configuration.fs | 46 +++++++++++++----------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/Terrabuild.Expressions.Tests/Eval.fs b/src/Terrabuild.Expressions.Tests/Eval.fs index 7010981c..5d7dce18 100644 --- a/src/Terrabuild.Expressions.Tests/Eval.fs +++ b/src/Terrabuild.Expressions.Tests/Eval.fs @@ -8,7 +8,6 @@ let private evaluationContext = { Eval.EvaluationContext.WorkspaceDir = Some TestContext.CurrentContext.WorkDirectory Eval.EvaluationContext.ProjectDir = FS.combinePath TestContext.CurrentContext.WorkDirectory "project-path" |> Some Eval.EvaluationContext.Data = Map.empty - Eval.EvaluationContext.Versions = Map.empty } diff --git a/src/Terrabuild.Expressions/Eval.fs b/src/Terrabuild.Expressions/Eval.fs index 41ec01cd..50cae98d 100644 --- a/src/Terrabuild.Expressions/Eval.fs +++ b/src/Terrabuild.Expressions/Eval.fs @@ -6,13 +6,11 @@ open Collections type EvaluationContext = { WorkspaceDir: string option ProjectDir: string option - Versions: Map Data: Map } with static member Empty = { WorkspaceDir = None ProjectDir = None - Versions = Map.empty Data = Map.empty } let rec eval (context: EvaluationContext) (expr: Expr) = diff --git a/src/Terrabuild/Core/Configuration.fs b/src/Terrabuild/Core/Configuration.fs index 17876ca0..6e72310c 100644 --- a/src/Terrabuild/Core/Configuration.fs +++ b/src/Terrabuild/Core/Configuration.fs @@ -132,7 +132,6 @@ let private buildEvaluationContext (options: ConfigOptions.Options) (workspaceCo let evaluationContext = { Eval.EvaluationContext.WorkspaceDir = Some options.Workspace Eval.EvaluationContext.ProjectDir = None - Eval.EvaluationContext.Versions = Map.empty Eval.EvaluationContext.Data = terrabuildVars } @@ -333,7 +332,7 @@ let private loadProjectDef (options: ConfigOptions.Options) (workspaceConfig: AS // this is the final stage: create targets and create the project let private finalizeProject projectDir evaluationContext (projectDef: LoadedProject) (projectDependencies: Map) = - let projectId = projectDir |> String.toLower + let projectDirId = projectDir |> String.toLower let tbFiles = Set [ "WORKSPACE"; "PROJECT" ] // get dependencies on files @@ -357,40 +356,45 @@ let private finalizeProject projectDir evaluationContext (projectDef: LoadedProj |> Seq.sort |> Hash.sha256strings - let versions = - projectDependencies - |> Map.map (fun _ depProj -> depProj.Hash) - // NOTE: this is the hash (modulo target name) used for reconcialiation across executions let projectHash = - [ projectId; filesHash; dependenciesHash ] + [ projectDirId; filesHash; dependenciesHash ] |> Hash.sha256strings + let evaluationContext = + let terrabuildProjectVars = + Map [ match projectDef.Id with + | Some projectId -> "terrabuild.project", Value.String projectId + | _ -> () + "terrabuild.version", Value.String projectHash ] + + let projectVars = + projectDependencies + |> Seq.choose (fun (KeyValue(_, project)) -> + project.Id |> Option.map (fun id -> + $"project.{id}", Value.Map (Map ["version", Value.String project.Hash]))) + |> Map.ofSeq + + { evaluationContext with + Eval.Data = + evaluationContext.Data + |> Map.addMap terrabuildProjectVars + |> Map.addMap projectVars } + let projectSteps = projectDef.Targets |> Map.map (fun targetName target -> let evaluationContext = let mutable evaluationContext = - let terrabuildProjectVars = - Map [ "terrabuild.project", Value.String projectId - "terrabuild.target" , Value.String targetName - "terrabuild.version", Value.String projectHash ] - - let projectVars = - projectDependencies - |> Seq.choose (fun (KeyValue(_, project)) -> - project.Id |> Option.map (fun id -> - $"project.{id}", Value.Map (Map ["version", Value.String project.Hash]))) - |> Map.ofSeq + let terrabuildTargetVars = + Map [ "terrabuild.target" , Value.String targetName ] { evaluationContext with Eval.ProjectDir = Some projectDir - Eval.Versions = versions Eval.Data = evaluationContext.Data - |> Map.addMap terrabuildProjectVars - |> Map.addMap projectVars } + |> Map.addMap terrabuildTargetVars } // build the values let localsHub = Hub.Create(1) From 9535a005e9426ecc13c63e89eddf74ec55b7dfc7 Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sat, 7 Jun 2025 15:55:29 +0200 Subject: [PATCH 2/3] simplify code --- src/Terrabuild/Core/Configuration.fs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Terrabuild/Core/Configuration.fs b/src/Terrabuild/Core/Configuration.fs index 6e72310c..c7770133 100644 --- a/src/Terrabuild/Core/Configuration.fs +++ b/src/Terrabuild/Core/Configuration.fs @@ -363,9 +363,7 @@ let private finalizeProject projectDir evaluationContext (projectDef: LoadedProj let evaluationContext = let terrabuildProjectVars = - Map [ match projectDef.Id with - | Some projectId -> "terrabuild.project", Value.String projectId - | _ -> () + Map [ if projectDef.Id.IsSome then "terrabuild.project", Value.String projectDef.Id.Value "terrabuild.version", Value.String projectHash ] let projectVars = From 32593949f26ff6352ab66f4ba19c66fa20dbaa0f Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sat, 7 Jun 2025 15:56:13 +0200 Subject: [PATCH 3/3] revert rename --- src/Terrabuild/Core/Configuration.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Terrabuild/Core/Configuration.fs b/src/Terrabuild/Core/Configuration.fs index c7770133..488f125d 100644 --- a/src/Terrabuild/Core/Configuration.fs +++ b/src/Terrabuild/Core/Configuration.fs @@ -332,7 +332,7 @@ let private loadProjectDef (options: ConfigOptions.Options) (workspaceConfig: AS // this is the final stage: create targets and create the project let private finalizeProject projectDir evaluationContext (projectDef: LoadedProject) (projectDependencies: Map) = - let projectDirId = projectDir |> String.toLower + let projectId = projectDir |> String.toLower let tbFiles = Set [ "WORKSPACE"; "PROJECT" ] // get dependencies on files @@ -358,7 +358,7 @@ let private finalizeProject projectDir evaluationContext (projectDef: LoadedProj // NOTE: this is the hash (modulo target name) used for reconcialiation across executions let projectHash = - [ projectDirId; filesHash; dependenciesHash ] + [ projectId; filesHash; dependenciesHash ] |> Hash.sha256strings let evaluationContext =