diff --git a/src/Terrabuild.Common/Ansi.fs b/src/Terrabuild.Common/Ansi.fs index 14d3362a..1517c5cf 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 = "🎉" @@ -30,14 +31,14 @@ module Emojis = let poop = "💩" let skull = "â˜ ī¸" let noentry = "â›”ī¸" - let cyclone = "🌀" + let cyclone = "" let prohibited = "đŸšĢ" let gear = "âš™ī¸" let clockwise = "â†ģ" let bang = "!" let recycle = "â™ģī¸Ž" let log = "𝍌" - let rightarrow = "â–ļ" + let arrow = "â€Ŗ" let brain = "🧠" let sun_cloud = "đŸŒ¤ī¸" let think = "🤔" @@ -51,6 +52,7 @@ module Emojis = let coffee = "â˜•ī¸" let construction = "🚧" let tombstone = "đŸĒĻ" + let unicorn = "đŸĻ„" module Styles = let reset = csi 0 diff --git a/src/Terrabuild/Core/Build.fs b/src/Terrabuild/Core/Build.fs index 29bd04c2..5485e21e 100644 --- a/src/Terrabuild/Core/Build.fs +++ b/src/Terrabuild/Core/Build.fs @@ -151,10 +151,7 @@ type Restorable(action: unit -> unit, dependencies: Restorable list) = let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.IApiClient option) (notification: IBuildNotification) (graph: GraphDef.Graph) = let startedAt = DateTime.UtcNow - let targets = options.Targets |> String.join " " - $"{Ansi.Emojis.rocket} Running targets [{targets}]" |> Terminal.writeLine - - $" {Ansi.Styles.green}{Ansi.Emojis.checkmark}{Ansi.Styles.reset} {graph.Nodes.Count} tasks to build" |> Terminal.writeLine + $"{Ansi.Emojis.rocket} Processing tasks" |> Terminal.writeLine notification.BuildStarted graph api |> Option.iter (fun api -> api.StartBuild()) diff --git a/src/Terrabuild/Core/Builder.fs b/src/Terrabuild/Core/Builder.fs index 58bf67c2..d9d7a381 100644 --- a/src/Terrabuild/Core/Builder.fs +++ b/src/Terrabuild/Core/Builder.fs @@ -14,7 +14,7 @@ let build (options: ConfigOptions.Options) (configuration: Configuration.Workspa let startedAt = DateTime.UtcNow Log.Debug("===== [Graph Build] =====") - $"{Ansi.Emojis.gear} Building graph" |> Terminal.writeLine + $"{Ansi.Emojis.construction} Constructing graph" |> Terminal.writeLine let processedNodes = ConcurrentDictionary() let allNodes = ConcurrentDictionary() @@ -162,7 +162,8 @@ let build (options: ConfigOptions.Options) (configuration: Configuration.Workspa let buildDuration = endedAt - startedAt Log.Debug("Graph Build: {duration}", buildDuration) - $" {Ansi.Styles.green}{Ansi.Emojis.checkmark}{Ansi.Styles.reset} {allNodes.Count} tasks" |> Terminal.writeLine + $" {Ansi.Styles.green}{Ansi.Emojis.arrow}{Ansi.Styles.reset} {allNodes.Count} nodes" |> Terminal.writeLine + $" {Ansi.Styles.green}{Ansi.Emojis.arrow}{Ansi.Styles.reset} {rootNodes.Count} root nodes" |> Terminal.writeLine { Graph.Nodes = allNodes |> Map.ofDict Graph.RootNodes = rootNodes } diff --git a/src/Terrabuild/Core/Configuration.fs b/src/Terrabuild/Core/Configuration.fs index 488f125d..cf91d383 100644 --- a/src/Terrabuild/Core/Configuration.fs +++ b/src/Terrabuild/Core/Configuration.fs @@ -556,19 +556,22 @@ let private finalizeProject projectDir evaluationContext (projectDef: LoadedProj let read (options: ConfigOptions.Options) = - $"{Ansi.Emojis.box} Reading {options.Configuration} configuration" |> 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) + let configInfos = + let targets = options.Targets |> String.join " " + let labels = options.Labels |> Option.map (fun labels -> labels |> String.join " ") + let warningConfig = [ + if options.Force then "force" + elif options.Retry then "retry" + if options.WhatIf then "whatif" ] |> String.join(" ") + [ + if warningConfig |> String.IsNullOrWhiteSpace |> not then $"Build flags [{warningConfig}]" + if options.Run.IsSome then $"Source control {options.Run.Value.Name}" + if options.Configuration.IsSome then $"Configuration {options.Configuration.Value}" + $"Targets [{targets}]" + if labels.IsSome then $"Labels [{labels}]" + ] + $"{Ansi.Emojis.gear} Settings" |> Terminal.writeLine + configInfos |> List.iter (fun configInfo -> $" {Ansi.Styles.green}{Ansi.Emojis.arrow}{Ansi.Styles.reset} {configInfo}" |> Terminal.writeLine) let workspaceContent = FS.combinePath options.Workspace "WORKSPACE" |> File.ReadAllText let workspaceConfig =