From 13e857caaecfb5c0e1689a2054d29f94e245f216 Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sun, 8 Jun 2025 11:34:51 +0200 Subject: [PATCH 1/3] better console progress --- src/Terrabuild/Core/Configuration.fs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Terrabuild/Core/Configuration.fs b/src/Terrabuild/Core/Configuration.fs index 488f125d..a068bff9 100644 --- a/src/Terrabuild/Core/Configuration.fs +++ b/src/Terrabuild/Core/Configuration.fs @@ -556,19 +556,18 @@ let private finalizeProject projectDir evaluationContext (projectDef: LoadedProj let read (options: ConfigOptions.Options) = - $"{Ansi.Emojis.box} Reading {options.Configuration} configuration" |> Terminal.writeLine + let warningConfig = [ + if options.Force then "force" + elif options.Retry then "retry" + if options.WhatIf then "whatif" ] |> String.join(" ") + if options.Configuration |> Option.isSome then + $"{Ansi.Emojis.info} Using configuration [{options.Configuration.Value}]" |> Terminal.writeLine + if warningConfig |> String.IsNullOrWhiteSpace |> not then + $"{Ansi.Emojis.warning} Build flags [{warningConfig}]" |> Terminal.writeLine - if options.Force then - $" {Ansi.Styles.yellow}{Ansi.Emojis.bang}{Ansi.Styles.reset} force build requested" |> Terminal.writeLine - else - if options.Retry then - $" {Ansi.Styles.yellow}{Ansi.Emojis.bang}{Ansi.Styles.reset} retry build requested" |> Terminal.writeLine - - if options.WhatIf then - $" {Ansi.Styles.yellow}{Ansi.Emojis.bang}{Ansi.Styles.reset} whatif mode requested" |> Terminal.writeLine options.Run - |> Option.iter (fun run -> $" {Ansi.Styles.green}{Ansi.Emojis.checkmark}{Ansi.Styles.reset} source control is {run.Name}" |> Terminal.writeLine) + |> Option.iter (fun run -> $"{Ansi.Styles.green}{Ansi.Emojis.checkmark}{Ansi.Styles.reset} source control is {run.Name}" |> Terminal.writeLine) let workspaceContent = FS.combinePath options.Workspace "WORKSPACE" |> File.ReadAllText let workspaceConfig = From 9c7d28b386fc2a642d5bbe3f8c737f7d6751b9ef Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sun, 8 Jun 2025 11:36:33 +0200 Subject: [PATCH 2/3] remove unscheduled nodes --- src/Terrabuild.Common/Ansi.fs | 1 + src/Terrabuild/Core/Build.fs | 8 ++++---- src/Terrabuild/Core/Logs.fs | 9 ++++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Terrabuild.Common/Ansi.fs b/src/Terrabuild.Common/Ansi.fs index 14d3362a..dbfee04d 100644 --- a/src/Terrabuild.Common/Ansi.fs +++ b/src/Terrabuild.Common/Ansi.fs @@ -11,6 +11,7 @@ let cursorHome = "\r" let csi (x: int) = $"{CSI}{x}m" module Emojis = + let info = "â„šī¸" let crossmark = "✘" let checkmark = "✔" let party = "🎉" diff --git a/src/Terrabuild/Core/Build.fs b/src/Terrabuild/Core/Build.fs index 29bd04c2..6b492274 100644 --- a/src/Terrabuild/Core/Build.fs +++ b/src/Terrabuild/Core/Build.fs @@ -16,6 +16,7 @@ type TaskRequest = type TaskStatus = | Success of completionDate:DateTime | Failure of completionDate:DateTime * message:string + | Pending [] type NodeInfo = { @@ -291,10 +292,9 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I TaskRequest.Build, buildNode() - let scheduledNodes = Concurrent.ConcurrentDictionary() let hub = Hub.Create(options.MaxConcurrency) let rec schedule nodeId = - if scheduledNodes.TryAdd(nodeId, true) then + if nodeResults.TryAdd(nodeId, (TaskRequest.Build, TaskStatus.Pending)) then let node = graph.Nodes[nodeId] let nodeComputed = hub.GetSignal nodeId @@ -315,7 +315,7 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I let buildRequest, completionStatus = processNode maxCompletionChildren node Log.Debug("{NodeId} completed request {Request} with status {Status}", node.Id, buildRequest, completionStatus) - nodeResults.TryAdd(node.Id, (buildRequest, completionStatus)) |> ignore + nodeResults[node.Id] <- (buildRequest, completionStatus) match completionStatus with | TaskStatus.Success completionDate -> @@ -327,7 +327,7 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I exn -> Log.Fatal(exn, "{NodeId} unexpected failure while building", node.Id) - nodeResults.TryAdd(node.Id, (TaskRequest.Build, TaskStatus.Failure (DateTime.UtcNow, exn.Message))) |> ignore + nodeResults[node.Id] <- (TaskRequest.Build, TaskStatus.Failure (DateTime.UtcNow, exn.Message)) notification.NodeCompleted node TaskRequest.Build false reraise() diff --git a/src/Terrabuild/Core/Logs.fs b/src/Terrabuild/Core/Logs.fs index 2bf14138..7a7ea22d 100644 --- a/src/Terrabuild/Core/Logs.fs +++ b/src/Terrabuild/Core/Logs.fs @@ -7,7 +7,8 @@ module Iconography = let restore_ko = Ansi.Emojis.pretzel let build_ok = Ansi.Emojis.green_checkmark let build_ko = Ansi.Emojis.red_cross - let task_pending = Ansi.Emojis.bang_mark + let task_pending = Ansi.Emojis.construction + let task_unknown = Ansi.Emojis.bang_mark let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (graph: GraphDef.Graph) (summary: Build.Summary) = @@ -35,7 +36,8 @@ let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (gra | Build.TaskRequest.Restore, Build.TaskStatus.Failure _ -> Iconography.restore_ko | Build.TaskRequest.Build, Build.TaskStatus.Success _ -> Iconography.build_ok | Build.TaskRequest.Build, Build.TaskStatus.Failure _ -> Iconography.build_ko - | _ -> Iconography.task_pending + | _ -> Iconography.task_pending + | _ -> Iconography.task_unknown let dumpMarkdown (node: GraphDef.Node) = let header = @@ -213,7 +215,7 @@ let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (gra fun nodes -> options.LogTypes |> List.iter (dump nodes) let sortedNodes = - graph.Nodes + summary.Nodes |> Map.map (fun nodeId _ -> graph.Nodes[nodeId]) |> Seq.map (fun (KeyValue(_, node)) -> node) |> Seq.sortBy (fun node -> match summary.Nodes |> Map.tryFind node.Id with @@ -221,6 +223,7 @@ let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (gra match nodeInfo.Status with | Build.TaskStatus.Success completionDate -> completionDate | Build.TaskStatus.Failure (completionDate, _) -> completionDate + | _ -> DateTime.MaxValue | _ -> DateTime.MaxValue) |> List.ofSeq From 8808f250e6721c2bdc041d970f8e7d03700159c5 Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Sun, 8 Jun 2025 11:39:23 +0200 Subject: [PATCH 3/3] revert change --- src/Terrabuild.Common/Ansi.fs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Terrabuild.Common/Ansi.fs b/src/Terrabuild.Common/Ansi.fs index dbfee04d..14d3362a 100644 --- a/src/Terrabuild.Common/Ansi.fs +++ b/src/Terrabuild.Common/Ansi.fs @@ -11,7 +11,6 @@ let cursorHome = "\r" let csi (x: int) = $"{CSI}{x}m" module Emojis = - let info = "â„šī¸" let crossmark = "✘" let checkmark = "✔" let party = "🎉"