From 360aa9b36d8d88c1f42fb54444367921a69b8877 Mon Sep 17 00:00:00 2001 From: Pierre Chalamet Date: Fri, 16 Jan 2026 14:08:33 +0100 Subject: [PATCH] add log/debug option on web app --- src/Terrabuild.UI/src/App.tsx | 8 +++++++ .../src/components/BuildControlsPanel.tsx | 23 +++++++++++++++++++ src/Terrabuild/Web/GraphServer.fs | 13 ++++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/Terrabuild.UI/src/App.tsx b/src/Terrabuild.UI/src/App.tsx index 0b7d130c..de4ea1a1 100644 --- a/src/Terrabuild.UI/src/App.tsx +++ b/src/Terrabuild.UI/src/App.tsx @@ -82,6 +82,8 @@ const App = () => { const [buildRunning, setBuildRunning] = useState(false); const [forceBuild, setForceBuild] = useState(false); const [retryBuild, setRetryBuild] = useState(false); + const [logBuild, setLogBuild] = useState(false); + const [debugBuild, setDebugBuild] = useState(false); const [parallelism, setParallelism] = useState(""); const [engine, setEngine] = useState("default"); const [configuration, setConfiguration] = useState(""); @@ -616,6 +618,8 @@ const App = () => { parallelism: parallel && parallel > 0 ? parallel : undefined, force: forceBuild, retry: retryBuild, + log: logBuild ? true : undefined, + debug: debugBuild ? true : undefined, configuration: configValue.length > 0 ? configValue : undefined, environment: envValue.length > 0 ? envValue : undefined, engine: engineValue, @@ -914,6 +918,10 @@ const App = () => { retryBuild={retryBuild} onForceBuildChange={setForceBuild} onRetryBuildChange={setRetryBuild} + logBuild={logBuild} + onLogBuildChange={setLogBuild} + debugBuild={debugBuild} + onDebugBuildChange={setDebugBuild} projects={projects} selectedProjects={selectedProjects} onProjectsChange={setSelectedProjects} diff --git a/src/Terrabuild.UI/src/components/BuildControlsPanel.tsx b/src/Terrabuild.UI/src/components/BuildControlsPanel.tsx index 212842d1..e8ef246b 100644 --- a/src/Terrabuild.UI/src/components/BuildControlsPanel.tsx +++ b/src/Terrabuild.UI/src/components/BuildControlsPanel.tsx @@ -33,6 +33,10 @@ type BuildControlsPanelProps = { retryBuild: boolean; onForceBuildChange: (checked: boolean) => void; onRetryBuildChange: (checked: boolean) => void; + logBuild: boolean; + onLogBuildChange: (checked: boolean) => void; + debugBuild: boolean; + onDebugBuildChange: (checked: boolean) => void; projects: ProjectInfo[]; selectedProjects: string[]; onProjectsChange: (values: string[]) => void; @@ -58,6 +62,10 @@ const BuildControlsPanel = ({ retryBuild, onForceBuildChange, onRetryBuildChange, + logBuild, + onLogBuildChange, + debugBuild, + onDebugBuildChange, projects, selectedProjects, onProjectsChange, @@ -116,6 +124,13 @@ const BuildControlsPanel = ({ } }} /> + { + onLogBuildChange(event.currentTarget.checked); + }} + /> + + + onDebugBuildChange(event.currentTarget.checked) + } + /> diff --git a/src/Terrabuild/Web/GraphServer.fs b/src/Terrabuild/Web/GraphServer.fs index 69006e99..f367bbcc 100644 --- a/src/Terrabuild/Web/GraphServer.fs +++ b/src/Terrabuild/Web/GraphServer.fs @@ -29,6 +29,8 @@ type BuildRequest = { Parallelism: int option Force: bool option Retry: bool option + Log: bool option + Debug: bool option Engine: string option Configuration: string option Environment: string option @@ -237,8 +239,17 @@ let private createBuildCommand (workspace: string) (request: BuildRequest) = | _ -> "" let forceArg = if request.Force |> Option.defaultValue false then " -f" else "" let retryArg = if request.Retry |> Option.defaultValue false then " -r" else "" + let logArg = if request.Log |> Option.defaultValue false then "--log" else "" + let debugArg = if request.Debug |> Option.defaultValue false then "--debug" else "" + let prefix = + [ logArg; debugArg ] + |> List.filter (fun value -> value <> "") + |> String.join " " let baseArgs = - $"run {targets} -w \"{workspace}\"{projectArgs}{parallelArg}{configArg}{environmentArg}{engineArg}{forceArg}{retryArg}" + if prefix = "" then + $"run {targets} -w \"{workspace}\"{projectArgs}{parallelArg}{configArg}{environmentArg}{engineArg}{forceArg}{retryArg}" + else + $"{prefix} run {targets} -w \"{workspace}\"{projectArgs}{parallelArg}{configArg}{environmentArg}{engineArg}{forceArg}{retryArg}" if isDotnetHost exePath then exePath, $"\"{assemblyPath}\" {baseArgs}" else