Search in sources :

Example 1 with ProblemsViewScope

use of com.google.idea.blaze.base.scope.scopes.ProblemsViewScope in project intellij by bazelbuild.

the class BlazeBeforeRunCommandHelper method runBlazeCommand.

/**
 * Kicks off the blaze task, returning a corresponding {@link ListenableFuture}.
 */
public static ListenableFuture<BuildResult> runBlazeCommand(BlazeCommandName commandName, BlazeCommandRunConfiguration configuration, BuildResultHelper buildResultHelper, List<String> requiredExtraBlazeFlags, List<String> overridableExtraBlazeFlags, BlazeInvocationContext invocationContext, String progressMessage) {
    Project project = configuration.getProject();
    BlazeCommandRunConfigurationCommonState handlerState = (BlazeCommandRunConfigurationCommonState) configuration.getHandler().getState();
    WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
    ProjectViewSet projectViewSet = ProjectViewManager.getInstance(project).getProjectViewSet();
    String binaryPath = handlerState.getBlazeBinaryState().getBlazeBinary() != null ? handlerState.getBlazeBinaryState().getBlazeBinary() : Blaze.getBuildSystemProvider(project).getBinaryPath(project);
    return ProgressiveTaskWithProgressIndicator.builder(project, TASK_TITLE).submitTaskWithResult(new ScopedTask<BuildResult>() {

        @Override
        protected BuildResult execute(BlazeContext context) {
            context.push(new ToolWindowScope.Builder(project, new Task(TASK_TITLE, Task.Type.BLAZE_BEFORE_RUN)).setPopupBehavior(BlazeUserSettings.getInstance().getShowBlazeConsoleOnRun()).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, workspaceRoot, invocationContext.type())).build()).push(new ProblemsViewScope(project, BlazeUserSettings.getInstance().getShowProblemsViewOnRun())).push(new BlazeConsoleScope.Builder(project).setPopupBehavior(BlazeUserSettings.getInstance().getShowBlazeConsoleOnRun()).addConsoleFilters(new IssueOutputFilter(project, workspaceRoot, invocationContext.type(), true)).build());
            context.output(new StatusOutput(progressMessage));
            BlazeCommand.Builder command = BlazeCommand.builder(binaryPath, commandName).addTargets(configuration.getTargets()).addBlazeFlags(overridableExtraBlazeFlags).addBlazeFlags(BlazeFlags.blazeFlags(project, projectViewSet, BlazeCommandName.BUILD, invocationContext)).addBlazeFlags(handlerState.getBlazeFlagsState().getFlagsForExternalProcesses()).addBlazeFlags(requiredExtraBlazeFlags).addBlazeFlags(buildResultHelper.getBuildFlags());
            int exitCode = ExternalTask.builder(workspaceRoot).addBlazeCommand(command.build()).context(context).stderr(LineProcessingOutputStream.of(BlazeConsoleLineProcessorProvider.getAllStderrLineProcessors(context))).build().run();
            return BuildResult.fromExitCode(exitCode);
        }
    });
}
Also used : BlazeCommandRunConfigurationCommonState(com.google.idea.blaze.base.run.state.BlazeCommandRunConfigurationCommonState) ProjectViewSet(com.google.idea.blaze.base.projectview.ProjectViewSet) ExternalTask(com.google.idea.blaze.base.async.process.ExternalTask) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) Task(com.google.idea.blaze.base.toolwindow.Task) IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) ToolWindowScope(com.google.idea.blaze.base.scope.scopes.ToolWindowScope) StatusOutput(com.google.idea.blaze.base.scope.output.StatusOutput) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) Project(com.intellij.openapi.project.Project) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) BlazeConsoleScope(com.google.idea.blaze.base.scope.scopes.BlazeConsoleScope) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope)

Example 2 with ProblemsViewScope

use of com.google.idea.blaze.base.scope.scopes.ProblemsViewScope in project intellij by bazelbuild.

the class BlazeJavaRunProfileState method startProcess.

@Override
protected ProcessHandler startProcess() throws ExecutionException {
    Project project = getConfiguration().getProject();
    BlazeCommand.Builder blazeCommand;
    BlazeTestUiSession testUiSession = useTestUi() ? TestUiSessionProvider.getInstance(project).getTestUiSession(getConfiguration().getTargets()) : null;
    if (testUiSession != null) {
        blazeCommand = getBlazeCommandBuilder(project, getConfiguration(), testUiSession.getBlazeFlags(), getExecutorType());
        setConsoleBuilder(new TextConsoleBuilderImpl(project) {

            @Override
            protected ConsoleView createConsole() {
                return SmRunnerUtils.getConsoleView(project, getConfiguration(), getEnvironment().getExecutor(), testUiSession);
            }
        });
    } else {
        blazeCommand = getBlazeCommandBuilder(project, getConfiguration(), ImmutableList.of(), getExecutorType());
    }
    addConsoleFilters(new BlazeTargetFilter(true), new IssueOutputFilter(project, WorkspaceRoot.fromProject(project), BlazeInvocationContext.ContextType.RunConfiguration, false));
    List<String> command;
    if (HotSwapUtils.canHotSwap(getEnvironment())) {
        try {
            command = HotSwapCommandBuilder.getBashCommandsToRunScript(project, blazeCommand);
        } catch (IOException e) {
            logger.warn("Failed to create script path. Hot swap will be disabled.", e);
            command = blazeCommand.build().toList();
        }
    } else {
        command = blazeCommand.build().toList();
    }
    WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
    return new ScopedBlazeProcessHandler(project, command, workspaceRoot, new ScopedBlazeProcessHandler.ScopedProcessHandlerDelegate() {

        @Override
        public void onBlazeContextStart(BlazeContext context) {
            context.push(new ProblemsViewScope(project, BlazeUserSettings.getInstance().getShowProblemsViewOnRun())).push(new IdeaLogScope());
        }

        @Override
        public ImmutableList<ProcessListener> createProcessListeners(BlazeContext context) {
            LineProcessingOutputStream outputStream = LineProcessingOutputStream.of(BlazeConsoleLineProcessorProvider.getAllStderrLineProcessors(context));
            return ImmutableList.of(new LineProcessingProcessAdapter(outputStream));
        }
    });
}
Also used : IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) LineProcessingProcessAdapter(com.google.idea.blaze.base.run.processhandler.LineProcessingProcessAdapter) BlazeCommand(com.google.idea.blaze.base.command.BlazeCommand) ConsoleView(com.intellij.execution.ui.ConsoleView) ImmutableList(com.google.common.collect.ImmutableList) BlazeTargetFilter(com.google.idea.blaze.base.run.filter.BlazeTargetFilter) IOException(java.io.IOException) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) ScopedBlazeProcessHandler(com.google.idea.blaze.base.run.processhandler.ScopedBlazeProcessHandler) Project(com.intellij.openapi.project.Project) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) LineProcessingOutputStream(com.google.idea.blaze.base.async.process.LineProcessingOutputStream) BlazeTestUiSession(com.google.idea.blaze.base.run.smrunner.BlazeTestUiSession) TextConsoleBuilderImpl(com.intellij.execution.filters.TextConsoleBuilderImpl)

Example 3 with ProblemsViewScope

use of com.google.idea.blaze.base.scope.scopes.ProblemsViewScope in project intellij by bazelbuild.

the class SyncPhaseCoordinator method setupScopes.

/**
 * Sets up the root {@link BlazeContext} for the given {@link SyncPhase}.
 */
private void setupScopes(BlazeSyncParams syncParams, BlazeContext context, ProgressIndicator indicator, SyncPhase phase, Task task, boolean startTaskOnScopeBegin) {
    boolean clearProblems = phase != SyncPhase.PROJECT_UPDATE;
    boolean notifyFinished = phase != SyncPhase.BUILD;
    context.push(new ExperimentScope());
    if (BlazeUserSettings.getInstance().getShowPerformanceWarnings()) {
        context.push(new PerformanceWarningScope());
    }
    context.push(new ProgressIndicatorScope(indicator));
    BlazeUserSettings userSettings = BlazeUserSettings.getInstance();
    context.push(new ToolWindowScope.Builder(project, task).setStartTaskOnScopeBegin(startTaskOnScopeBegin).setProgressIndicator(indicator).setPopupBehavior(syncParams.backgroundSync() ? FocusBehavior.NEVER : userSettings.getShowBlazeConsoleOnSync()).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, WorkspaceRoot.fromProject(project), ContextType.Sync)).build()).push(new BlazeConsoleScope.Builder(project, indicator).setPopupBehavior(syncParams.backgroundSync() ? FocusBehavior.NEVER : userSettings.getShowBlazeConsoleOnSync()).addConsoleFilters(new IssueOutputFilter(project, WorkspaceRoot.fromProject(project), ContextType.Sync, true)).setClearPreviousState(clearProblems).build()).push(new ProblemsViewScope(project, syncParams.backgroundSync() ? FocusBehavior.NEVER : userSettings.getShowProblemsViewOnSync(), /* resetProblemsContext= */
    clearProblems)).push(new IdeaLogScope());
    if (notifyFinished && !syncParams.backgroundSync() && syncParams.syncMode() != SyncMode.NO_BUILD) {
        context.push(new NotificationScope(project, "Sync", "Sync project", "Sync successful", "Sync failed"));
    }
    context.output(new StatusOutput(String.format("Syncing project: %s...", syncParams)));
}
Also used : IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) ExperimentScope(com.google.idea.blaze.base.experiments.ExperimentScope) ToolWindowScope(com.google.idea.blaze.base.scope.scopes.ToolWindowScope) NotificationScope(com.google.idea.blaze.base.scope.scopes.NotificationScope) StatusOutput(com.google.idea.blaze.base.scope.output.StatusOutput) PerformanceWarningScope(com.google.idea.blaze.base.scope.scopes.PerformanceWarningScope) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeConsoleScope(com.google.idea.blaze.base.scope.scopes.BlazeConsoleScope) BlazeUserSettings(com.google.idea.blaze.base.settings.BlazeUserSettings) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) ProgressIndicatorScope(com.google.idea.blaze.base.scope.scopes.ProgressIndicatorScope)

Example 4 with ProblemsViewScope

use of com.google.idea.blaze.base.scope.scopes.ProblemsViewScope in project intellij by bazelbuild.

the class BlazeAndroidRunConfigurationRunner method executeBeforeRunTask.

@Override
public boolean executeBeforeRunTask(ExecutionEnvironment env) {
    final Project project = env.getProject();
    BlazeUserSettings settings = BlazeUserSettings.getInstance();
    return Scope.root(context -> {
        context.push(new ProblemsViewScope(project, settings.getShowProblemsViewOnRun())).push(new ExperimentScope()).push(new BlazeConsoleScope.Builder(project).setPopupBehavior(settings.getShowBlazeConsoleOnRun()).addConsoleFilters(new IssueOutputFilter(project, WorkspaceRoot.fromProject(project), BlazeInvocationContext.ContextType.BeforeRunTask, true)).build()).push(new ToolWindowScope.Builder(project, new Task("Build apk", Task.Type.BLAZE_BEFORE_RUN)).setPopupBehavior(settings.getShowBlazeConsoleOnRun()).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, WorkspaceRoot.fromProject(project), ContextType.BeforeRunTask)).build()).push(new IdeaLogScope());
        BlazeAndroidRunContext runContext = env.getCopyableUserData(RUN_CONTEXT_KEY);
        if (runContext == null) {
            IssueOutput.error("Could not find run context. Please try again").submit(context);
            return false;
        }
        BlazeAndroidDeviceSelector.DeviceSession deviceSession = env.getCopyableUserData(DEVICE_SESSION_KEY);
        ApkBuildStep buildStep = runContext.getBuildStep();
        ScopedTask<Void> buildTask = new ScopedTask<Void>(context) {

            @Override
            protected Void execute(BlazeContext context) {
                buildStep.build(context, deviceSession);
                return null;
            }
        };
        try {
            ListenableFuture<Void> buildFuture = ProgressiveTaskWithProgressIndicator.builder(project, String.format("Executing %s apk build", Blaze.buildSystemName(project))).submitTaskWithResult(buildTask);
            Futures.getChecked(buildFuture, ExecutionException.class);
        } catch (ExecutionException e) {
            context.setHasError();
        } catch (CancellationException e) {
            context.setCancelled();
        } catch (Exception e) {
            LOG.error(e);
            return false;
        }
        return context.shouldContinue();
    });
}
Also used : IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) Task(com.google.idea.blaze.base.toolwindow.Task) ExperimentScope(com.google.idea.blaze.base.experiments.ExperimentScope) ToolWindowScope(com.google.idea.blaze.base.scope.scopes.ToolWindowScope) ExecutionException(com.intellij.execution.ExecutionException) CancellationException(java.util.concurrent.CancellationException) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) Project(com.intellij.openapi.project.Project) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) BlazeUserSettings(com.google.idea.blaze.base.settings.BlazeUserSettings) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) CancellationException(java.util.concurrent.CancellationException) ExecutionException(com.intellij.execution.ExecutionException)

Example 5 with ProblemsViewScope

use of com.google.idea.blaze.base.scope.scopes.ProblemsViewScope in project intellij by bazelbuild.

the class BlazeBuildService method buildTargetExpressions.

private static void buildTargetExpressions(Project project, ProjectViewSet projectView, BlazeProjectData projectData, ScopedFunction<List<TargetExpression>> targetsFunction, NotificationScope notificationScope, String taskName) {
    if (ApplicationManager.getApplication().isUnitTestMode()) {
        // this never being called *and* relied on PROJECT_LAST_BUILD_TIMESTAMP_KEY being set
        return;
    }
    FocusBehavior problemsViewFocus = BlazeUserSettings.getInstance().getShowProblemsViewOnRun();
    // go/futurereturn-lsc
    @SuppressWarnings("unused") Future<?> possiblyIgnoredError = ProgressiveTaskWithProgressIndicator.builder(project, "Building targets").submitTaskWithResult(new ScopedTask<Void>() {

        @Override
        public Void execute(BlazeContext context) {
            Task task = new Task(taskName, Task.Type.BLAZE_MAKE);
            context.push(new ToolWindowScope.Builder(project, task).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, WorkspaceRoot.fromProject(project), BlazeInvocationContext.ContextType.Sync)).build()).push(new ExperimentScope()).push(new BlazeConsoleScope.Builder(project).addConsoleFilters(new IssueOutputFilter(project, WorkspaceRoot.fromProject(project), BlazeInvocationContext.ContextType.Sync, true)).build()).push(new ProblemsViewScope(project, problemsViewFocus)).push(new IdeaLogScope()).push(new TimingScope("Make", EventType.BlazeInvocation)).push(notificationScope);
            List<TargetExpression> targets = targetsFunction.execute(context);
            if (targets == null) {
                return null;
            }
            BlazeBuildParams buildParams = BlazeBuildParams.fromProject(project);
            WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
            SaveUtil.saveAllFiles();
            BlazeBuildListener.EP_NAME.extensions().forEach(e -> e.buildStarting(project));
            ShardedTargetsResult shardedTargets = BlazeBuildTargetSharder.expandAndShardTargets(project, context, workspaceRoot, buildParams, projectView, projectData.getWorkspacePathResolver(), targets);
            if (shardedTargets.buildResult.status == BuildResult.Status.FATAL_ERROR) {
                return null;
            }
            BlazeBuildOutputs buildOutputs = BlazeIdeInterface.getInstance().build(project, context, workspaceRoot, projectData.getBlazeVersionData(), buildParams, projectView, projectData.getBlazeInfo(), shardedTargets.shardedTargets, projectData.getWorkspaceLanguageSettings(), ImmutableSet.of(OutputGroup.COMPILE));
            refreshFileCachesAndNotifyListeners(context, buildOutputs, project);
            if (buildOutputs.buildResult.status != BuildResult.Status.SUCCESS) {
                context.setHasError();
            }
            return null;
        }
    });
}
Also used : BlazeIdeInterface(com.google.idea.blaze.base.sync.aspects.BlazeIdeInterface) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) ImmutableCollection(com.google.common.collect.ImmutableCollection) ScopedFunction(com.google.idea.blaze.base.scope.ScopedFunction) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) ProjectViewManager(com.google.idea.blaze.base.projectview.ProjectViewManager) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) Future(java.util.concurrent.Future) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) BlazeConsoleScope(com.google.idea.blaze.base.scope.scopes.BlazeConsoleScope) BlazeBuildParams(com.google.idea.blaze.base.sync.BlazeBuildParams) TargetExpression(com.google.idea.blaze.base.model.primitives.TargetExpression) SaveUtil(com.google.idea.blaze.base.util.SaveUtil) Task(com.google.idea.blaze.base.toolwindow.Task) BlazeBuildOutputs(com.google.idea.blaze.base.sync.aspects.BlazeBuildOutputs) Blaze(com.google.idea.blaze.base.settings.Blaze) ImmutableSet(com.google.common.collect.ImmutableSet) BlazeProjectDataManager(com.google.idea.blaze.base.sync.data.BlazeProjectDataManager) IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) List(java.util.List) FocusBehavior(com.google.idea.blaze.base.settings.BlazeUserSettings.FocusBehavior) ServiceManager(com.intellij.openapi.components.ServiceManager) FileCaches(com.google.idea.blaze.base.filecache.FileCaches) ProjectViewSet(com.google.idea.blaze.base.projectview.ProjectViewSet) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) ApplicationManager(com.intellij.openapi.application.ApplicationManager) ToolWindowScope(com.google.idea.blaze.base.scope.scopes.ToolWindowScope) MoreExecutors(com.google.common.util.concurrent.MoreExecutors) ExperimentScope(com.google.idea.blaze.base.experiments.ExperimentScope) NotificationScope(com.google.idea.blaze.base.scope.scopes.NotificationScope) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) SyncCanceledException(com.google.idea.blaze.base.sync.SyncScope.SyncCanceledException) Lists(com.google.common.collect.Lists) OutputGroup(com.google.idea.blaze.base.sync.aspects.strategy.AspectStrategy.OutputGroup) SyncProjectTargetsHelper(com.google.idea.blaze.base.sync.SyncProjectTargetsHelper) Project(com.intellij.openapi.project.Project) BlazeBuildTargetSharder(com.google.idea.blaze.base.sync.sharding.BlazeBuildTargetSharder) Nullable(javax.annotation.Nullable) Key(com.intellij.openapi.util.Key) FutureCallback(com.google.common.util.concurrent.FutureCallback) SyncFailedException(com.google.idea.blaze.base.sync.SyncScope.SyncFailedException) Futures(com.google.common.util.concurrent.Futures) Label(com.google.idea.blaze.base.model.primitives.Label) BlazeUserSettings(com.google.idea.blaze.base.settings.BlazeUserSettings) TimingScope(com.google.idea.blaze.base.scope.scopes.TimingScope) BlazeIssueParser(com.google.idea.blaze.base.issueparser.BlazeIssueParser) ProgressiveTaskWithProgressIndicator(com.google.idea.blaze.base.async.executor.ProgressiveTaskWithProgressIndicator) BlazeInvocationContext(com.google.idea.blaze.base.command.BlazeInvocationContext) ShardedTargetsResult(com.google.idea.blaze.base.sync.sharding.BlazeBuildTargetSharder.ShardedTargetsResult) EventType(com.google.idea.blaze.base.scope.scopes.TimingScope.EventType) BlazeBuildParams(com.google.idea.blaze.base.sync.BlazeBuildParams) ShardedTargetsResult(com.google.idea.blaze.base.sync.sharding.BlazeBuildTargetSharder.ShardedTargetsResult) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) Task(com.google.idea.blaze.base.toolwindow.Task) IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) ExperimentScope(com.google.idea.blaze.base.experiments.ExperimentScope) FocusBehavior(com.google.idea.blaze.base.settings.BlazeUserSettings.FocusBehavior) BlazeBuildOutputs(com.google.idea.blaze.base.sync.aspects.BlazeBuildOutputs) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) TimingScope(com.google.idea.blaze.base.scope.scopes.TimingScope) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) List(java.util.List)

Aggregations

IssueOutputFilter (com.google.idea.blaze.base.issueparser.IssueOutputFilter)9 ProblemsViewScope (com.google.idea.blaze.base.scope.scopes.ProblemsViewScope)9 BlazeContext (com.google.idea.blaze.base.scope.BlazeContext)8 WorkspaceRoot (com.google.idea.blaze.base.model.primitives.WorkspaceRoot)6 IdeaLogScope (com.google.idea.blaze.base.scope.scopes.IdeaLogScope)6 ToolWindowScope (com.google.idea.blaze.base.scope.scopes.ToolWindowScope)6 ProjectViewSet (com.google.idea.blaze.base.projectview.ProjectViewSet)5 ScopedTask (com.google.idea.blaze.base.scope.ScopedTask)5 BlazeConsoleScope (com.google.idea.blaze.base.scope.scopes.BlazeConsoleScope)5 Project (com.intellij.openapi.project.Project)5 BlazeCommand (com.google.idea.blaze.base.command.BlazeCommand)4 ExperimentScope (com.google.idea.blaze.base.experiments.ExperimentScope)4 BlazeUserSettings (com.google.idea.blaze.base.settings.BlazeUserSettings)4 Task (com.google.idea.blaze.base.toolwindow.Task)4 ExternalTask (com.google.idea.blaze.base.async.process.ExternalTask)3 StatusOutput (com.google.idea.blaze.base.scope.output.StatusOutput)3 BuildResult (com.google.idea.blaze.base.sync.aspects.BuildResult)3 CancellationException (java.util.concurrent.CancellationException)3 ImmutableList (com.google.common.collect.ImmutableList)2 LineProcessingOutputStream (com.google.idea.blaze.base.async.process.LineProcessingOutputStream)2