private Task <SandboxedProcessResult> RunJavaScriptGraphBuilderAsync( string nodeExeLocation, AbsolutePath outputFile, BuildParameters.IBuildParameters buildParameters, AbsolutePath toolLocation) { AbsolutePath toolPath = m_configuration.Layout.BuildEngineDirectory.Combine(m_context.PathTable, RelativePathToGraphConstructionTool); string outputDirectory = outputFile.GetParent(m_context.PathTable).ToString(m_context.PathTable); var cmdExeArtifact = FileArtifact.CreateSourceFile(AbsolutePath.Create(m_context.PathTable, Environment.GetEnvironmentVariable("COMSPEC"))); var toolArguments = GetGraphConstructionToolArguments(outputFile, toolLocation, toolPath, nodeExeLocation); Tracing.Logger.Log.ConstructingGraphScript(m_context.LoggingContext, toolArguments); return(FrontEndUtilities.RunSandboxedToolAsync( m_context, cmdExeArtifact.Path.ToString(m_context.PathTable), buildStorageDirectory: outputDirectory, fileAccessManifest: FrontEndUtilities.GenerateToolFileAccessManifest(m_context, outputFile.GetParent(m_context.PathTable)), arguments: toolArguments, workingDirectory: m_resolverSettings.Root.ToString(m_context.PathTable), description: $"{Name} graph builder", buildParameters)); }
private Task <SandboxedProcessResult> RunRushGraphBuilderAsync( AbsolutePath outputFile, BuildParameters.IBuildParameters buildParameters) { AbsolutePath toolPath = m_configuration.Layout.BuildEngineDirectory.Combine(m_context.PathTable, RelativePathToGraphConstructionTool); string outputDirectory = outputFile.GetParent(m_context.PathTable).ToString(m_context.PathTable); // We always use cmd.exe as the tool so if the node.exe location is not provided we can just pass 'node.exe' and let PATH do the work. var cmdExeArtifact = FileArtifact.CreateSourceFile(AbsolutePath.Create(m_context.PathTable, Environment.GetEnvironmentVariable("COMSPEC"))); string nodeExe = m_resolverSettings.NodeExeLocation.HasValue ? m_resolverSettings.NodeExeLocation.Value.Path.ToString(m_context.PathTable) : "node.exe"; string pathToRushJson = m_resolverSettings.Root.Combine(m_context.PathTable, "rush.json").ToString(m_context.PathTable); // TODO: add qualifier support. // The graph construction tool expects: <path-to-rush.json> <path-to-output-graph> [<debug|release>] string toolArguments = $@"/C """"{nodeExe}"" ""{toolPath.ToString(m_context.PathTable)}"" ""{pathToRushJson}"" ""{outputFile.ToString(m_context.PathTable)}"" debug"""; return(FrontEndUtilities.RunSandboxedToolAsync( m_context, cmdExeArtifact.Path.ToString(m_context.PathTable), buildStorageDirectory: outputDirectory, fileAccessManifest: FrontEndUtilities.GenerateToolFileAccessManifest(m_context, outputFile.GetParent(m_context.PathTable)), arguments: toolArguments, workingDirectory: m_configuration.Layout.SourceDirectory.ToString(m_context.PathTable), description: "Rush graph builder", buildParameters)); }