Search in sources :

Example 11 with GetArtifactsException

use of com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException in project intellij by bazelbuild.

the class BlazeGoRunConfigurationRunner method getExecutableToDebug.

/**
 * Builds blaze go target and returns the output build artifact.
 *
 * @throws ExecutionException if the target cannot be debugged.
 */
private static ExecutableInfo getExecutableToDebug(ExecutionEnvironment env) throws ExecutionException {
    BlazeCommandRunConfiguration configuration = BlazeCommandRunConfigurationRunner.getConfiguration(env);
    Project project = configuration.getProject();
    BlazeProjectData blazeProjectData = BlazeProjectDataManager.getInstance(project).getBlazeProjectData();
    if (blazeProjectData == null) {
        throw new ExecutionException("Not synced yet, please sync project");
    }
    Label label = getSingleTarget(configuration);
    SaveUtil.saveAllFiles();
    // locally
    try (BuildResultHelper buildResultHelper = BuildResultHelperProvider.createForLocalBuild(project)) {
        ImmutableList.Builder<String> flags = ImmutableList.builder();
        if (Blaze.getBuildSystemName(project) == BuildSystemName.Blaze) {
            // $ go tool compile
            // -N    disable optimizations
            // -l    disable inlining
            flags.add("--gc_goopt=-N").add("--gc_goopt=-l");
        } else {
            // bazel build adds these flags themselves with -c dbg
            // https://github.com/bazelbuild/rules_go/issues/741
            flags.add("--compilation_mode=dbg");
        }
        Optional<Path> scriptPath = Optional.empty();
        if (scriptPathEnabled.getValue()) {
            try {
                scriptPath = Optional.of(BlazeBeforeRunCommandHelper.createScriptPathFile());
                flags.add("--script_path=" + scriptPath.get());
            } catch (IOException e) {
                // Could still work without script path.
                // Script path is only needed to parse arguments from target.
                logger.warn("Failed to create script path file. Target arguments will not be parsed.", e);
            }
        }
        ListenableFuture<BuildResult> buildOperation = BlazeBeforeRunCommandHelper.runBlazeCommand(scriptPath.isPresent() ? BlazeCommandName.RUN : BlazeCommandName.BUILD, configuration, buildResultHelper, flags.build(), ImmutableList.of("--dynamic_mode=off", "--test_sharding_strategy=disabled"), BlazeInvocationContext.runConfigContext(ExecutorType.fromExecutor(env.getExecutor()), configuration.getType(), true), "Building debug binary");
        try {
            BuildResult result = buildOperation.get();
            if (result.outOfMemory()) {
                throw new ExecutionException("Out of memory while trying to build debug target");
            } else if (result.status == Status.BUILD_ERROR) {
                throw new ExecutionException("Build error while trying to build debug target");
            } else if (result.status == Status.FATAL_ERROR) {
                throw new ExecutionException(String.format("Fatal error (%d) while trying to build debug target", result.exitCode));
            }
        } catch (InterruptedException | CancellationException e) {
            buildOperation.cancel(true);
            throw new RunCanceledByUserException();
        } catch (java.util.concurrent.ExecutionException e) {
            throw new ExecutionException(e);
        }
        if (scriptPath.isPresent()) {
            if (!Files.exists(scriptPath.get())) {
                throw new ExecutionException(String.format("No debugger executable script path file produced. Expected file at: %s", scriptPath.get()));
            }
            WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
            BlazeInfo blazeInfo = BlazeProjectDataManager.getInstance(project).getBlazeProjectData().getBlazeInfo();
            return parseScriptPathFile(workspaceRoot, blazeInfo.getExecutionRoot(), scriptPath.get());
        } else {
            List<File> candidateFiles;
            try {
                candidateFiles = BlazeArtifact.getLocalFiles(buildResultHelper.getBuildArtifactsForTarget(label, file -> true)).stream().filter(File::canExecute).collect(Collectors.toList());
            } catch (GetArtifactsException e) {
                throw new ExecutionException(String.format("Failed to get output artifacts when building %s: %s", label, e.getMessage()));
            }
            if (candidateFiles.isEmpty()) {
                throw new ExecutionException(String.format("No output artifacts found when building %s", label));
            }
            File binary = findExecutable(label, candidateFiles);
            if (binary == null) {
                throw new ExecutionException(String.format("More than 1 executable was produced when building %s; " + "don't know which one to debug", label));
            }
            LocalFileSystem.getInstance().refreshIoFiles(ImmutableList.of(binary));
            File workingDir = getWorkingDirectory(WorkspaceRoot.fromProject(project), binary);
            return new ExecutableInfo(binary, workingDir, ImmutableList.of(), ImmutableMap.of());
        }
    }
}
Also used : GoExecutor(com.goide.util.GoExecutor) BlazeCommandRunConfigurationRunner(com.google.idea.blaze.base.run.confighandler.BlazeCommandRunConfigurationRunner) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) GetArtifactsException(com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException) BlazeCommandRunConfiguration(com.google.idea.blaze.base.run.BlazeCommandRunConfiguration) RunProfileState(com.intellij.execution.configurations.RunProfileState) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) RunCanceledByUserException(com.intellij.execution.RunCanceledByUserException) ExecutionEnvironment(com.intellij.execution.runners.ExecutionEnvironment) Matcher(java.util.regex.Matcher) Map(java.util.Map) TargetExpression(com.google.idea.blaze.base.model.primitives.TargetExpression) SaveUtil(com.google.idea.blaze.base.util.SaveUtil) ExecutionResult(com.intellij.execution.ExecutionResult) Logger(com.intellij.openapi.diagnostic.Logger) Module(com.intellij.openapi.module.Module) Splitter(com.google.common.base.Splitter) Path(java.nio.file.Path) Blaze(com.google.idea.blaze.base.settings.Blaze) ImmutableMap(com.google.common.collect.ImmutableMap) CancellationException(java.util.concurrent.CancellationException) GoApplicationRunningState(com.goide.execution.application.GoApplicationRunningState) BuildSystemName(com.google.idea.blaze.base.settings.BuildSystemName) BuildResultHelper(com.google.idea.blaze.base.command.buildresult.BuildResultHelper) Collectors(java.util.stream.Collectors) FileOperationProvider(com.google.idea.blaze.base.io.FileOperationProvider) BlazeProjectDataManager(com.google.idea.blaze.base.sync.data.BlazeProjectDataManager) LocalFileSystem(com.intellij.openapi.vfs.LocalFileSystem) BlazeArtifact(com.google.idea.blaze.base.command.buildresult.BlazeArtifact) BlazeCommandName(com.google.idea.blaze.base.command.BlazeCommandName) BlazeBeforeRunCommandHelper(com.google.idea.blaze.base.run.BlazeBeforeRunCommandHelper) List(java.util.List) Status(com.google.idea.blaze.base.sync.aspects.BuildResult.Status) BuildResultHelperProvider(com.google.idea.blaze.base.command.buildresult.BuildResultHelperProvider) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) Optional(java.util.Optional) ExecutionUtil(com.intellij.execution.runners.ExecutionUtil) BlazeInfo(com.google.idea.blaze.base.command.info.BlazeInfo) Pattern(java.util.regex.Pattern) Iterables(com.google.common.collect.Iterables) Kind(com.goide.execution.GoBuildingRunConfiguration.Kind) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) ExecutionException(com.intellij.execution.ExecutionException) ModuleManager(com.intellij.openapi.module.ModuleManager) HashMap(java.util.HashMap) AtomicReference(java.util.concurrent.atomic.AtomicReference) GoApplicationConfiguration(com.goide.execution.application.GoApplicationConfiguration) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) BlazeDataStorage(com.google.idea.blaze.base.sync.data.BlazeDataStorage) BoolExperiment(com.google.idea.common.experiments.BoolExperiment) RunManager(com.intellij.execution.RunManager) Project(com.intellij.openapi.project.Project) ParametersListUtil(com.intellij.util.execution.ParametersListUtil) Nullable(javax.annotation.Nullable) ProgramRunner(com.intellij.execution.runners.ProgramRunner) GoCommandLineParameter(com.goide.util.GoCommandLineParameter) Files(java.nio.file.Files) UTF_8(java.nio.charset.StandardCharsets.UTF_8) StringUtil(com.intellij.openapi.util.text.StringUtil) Key(com.intellij.openapi.util.Key) IOException(java.io.IOException) Executor(com.intellij.execution.Executor) BlazeCommandRunConfigurationCommonState(com.google.idea.blaze.base.run.state.BlazeCommandRunConfigurationCommonState) File(java.io.File) BlazeCommandRunProfileState(com.google.idea.blaze.base.run.confighandler.BlazeCommandGenericRunConfigurationRunner.BlazeCommandRunProfileState) ExecutorType(com.google.idea.blaze.base.run.ExecutorType) Paths(java.nio.file.Paths) Label(com.google.idea.blaze.base.model.primitives.Label) MoreFiles(com.google.common.io.MoreFiles) GoApplicationRunConfigurationType(com.goide.execution.application.GoApplicationRunConfigurationType) BlazeInvocationContext(com.google.idea.blaze.base.command.BlazeInvocationContext) PathUtil(com.intellij.util.PathUtil) ImmutableList(com.google.common.collect.ImmutableList) Label(com.google.idea.blaze.base.model.primitives.Label) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) RunCanceledByUserException(com.intellij.execution.RunCanceledByUserException) BuildResultHelper(com.google.idea.blaze.base.command.buildresult.BuildResultHelper) GetArtifactsException(com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException) ExecutionException(com.intellij.execution.ExecutionException) BlazeCommandRunConfiguration(com.google.idea.blaze.base.run.BlazeCommandRunConfiguration) Path(java.nio.file.Path) IOException(java.io.IOException) Project(com.intellij.openapi.project.Project) BlazeInfo(com.google.idea.blaze.base.command.info.BlazeInfo) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) CancellationException(java.util.concurrent.CancellationException) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) File(java.io.File)

Example 12 with GetArtifactsException

use of com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException in project intellij by bazelbuild.

the class ClassFileManifestBuilder method buildManifest.

/**
 * Builds a .class file manifest, then diffs against any previously calculated manifest for this
 * debugging session.
 *
 * @return null if no diff is available (either no manifest could be calculated, or no previously
 *     calculated manifest is available.
 */
@Nullable
public static ClassFileManifest.Diff buildManifest(ExecutionEnvironment env, @Nullable HotSwapProgress progress) throws ExecutionException {
    if (!HotSwapUtils.canHotSwap(env)) {
        return null;
    }
    BlazeCommandRunConfiguration configuration = BlazeCommandRunConfigurationRunner.getConfiguration(env);
    Project project = configuration.getProject();
    BlazeProjectData projectData = BlazeProjectDataManager.getInstance(project).getBlazeProjectData();
    if (projectData == null) {
        throw new ExecutionException("Not synced yet; please sync project");
    }
    JavaClasspathAspectStrategy aspectStrategy = JavaClasspathAspectStrategy.findStrategy(projectData.getBlazeVersionData());
    if (aspectStrategy == null) {
        return null;
    }
    SaveUtil.saveAllFiles();
    // locally
    try (BuildResultHelper buildResultHelper = BuildResultHelperProvider.createForLocalBuild(project)) {
        ListenableFuture<BuildResult> buildOperation = BlazeBeforeRunCommandHelper.runBlazeCommand(BlazeCommandName.BUILD, configuration, buildResultHelper, aspectStrategy.getBuildFlags(), ImmutableList.of(), BlazeInvocationContext.runConfigContext(ExecutorType.fromExecutor(env.getExecutor()), configuration.getType(), true), "Building debug binary");
        if (progress != null) {
            progress.setCancelWorker(() -> buildOperation.cancel(true));
        }
        try {
            BuildResult result = buildOperation.get();
            if (result.status != BuildResult.Status.SUCCESS) {
                throw new ExecutionException("Blaze failure building debug binary");
            }
        } catch (InterruptedException | CancellationException e) {
            buildOperation.cancel(true);
            throw new RunCanceledByUserException();
        } catch (java.util.concurrent.ExecutionException e) {
            throw new ExecutionException(e);
        }
        ImmutableList<File> jars;
        try {
            jars = BlazeArtifact.getLocalFiles(buildResultHelper.getArtifactsForOutputGroup(JavaClasspathAspectStrategy.OUTPUT_GROUP, file -> true)).stream().filter(f -> f.getName().endsWith(".jar")).collect(toImmutableList());
        } catch (GetArtifactsException e) {
            throw new ExecutionException("Failed to get debug binary: " + e.getMessage());
        }
        ClassFileManifest oldManifest = getManifest(env);
        ClassFileManifest newManifest = ClassFileManifest.build(jars, oldManifest);
        env.getCopyableUserData(MANIFEST_KEY).set(newManifest);
        return oldManifest != null ? ClassFileManifest.modifiedClasses(oldManifest, newManifest) : null;
    }
}
Also used : ListenableFuture(com.google.common.util.concurrent.ListenableFuture) ExecutionException(com.intellij.execution.ExecutionException) BlazeCommandRunConfigurationRunner(com.google.idea.blaze.base.run.confighandler.BlazeCommandRunConfigurationRunner) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) GetArtifactsException(com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException) AtomicReference(java.util.concurrent.atomic.AtomicReference) BlazeCommandRunConfiguration(com.google.idea.blaze.base.run.BlazeCommandRunConfiguration) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) RunCanceledByUserException(com.intellij.execution.RunCanceledByUserException) ExecutionEnvironment(com.intellij.execution.runners.ExecutionEnvironment) ImmutableList(com.google.common.collect.ImmutableList) HotSwapProgress(com.intellij.debugger.impl.HotSwapProgress) Project(com.intellij.openapi.project.Project) SaveUtil(com.google.idea.blaze.base.util.SaveUtil) Nullable(javax.annotation.Nullable) CancellationException(java.util.concurrent.CancellationException) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) Key(com.intellij.openapi.util.Key) BuildResultHelper(com.google.idea.blaze.base.command.buildresult.BuildResultHelper) BlazeProjectDataManager(com.google.idea.blaze.base.sync.data.BlazeProjectDataManager) File(java.io.File) BlazeArtifact(com.google.idea.blaze.base.command.buildresult.BlazeArtifact) BlazeCommandName(com.google.idea.blaze.base.command.BlazeCommandName) BlazeBeforeRunCommandHelper(com.google.idea.blaze.base.run.BlazeBeforeRunCommandHelper) ExecutorType(com.google.idea.blaze.base.run.ExecutorType) BuildResultHelperProvider(com.google.idea.blaze.base.command.buildresult.BuildResultHelperProvider) BlazeInvocationContext(com.google.idea.blaze.base.command.BlazeInvocationContext) RunCanceledByUserException(com.intellij.execution.RunCanceledByUserException) Project(com.intellij.openapi.project.Project) BuildResult(com.google.idea.blaze.base.sync.aspects.BuildResult) BuildResultHelper(com.google.idea.blaze.base.command.buildresult.BuildResultHelper) GetArtifactsException(com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException) CancellationException(java.util.concurrent.CancellationException) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) ExecutionException(com.intellij.execution.ExecutionException) File(java.io.File) BlazeCommandRunConfiguration(com.google.idea.blaze.base.run.BlazeCommandRunConfiguration) Nullable(javax.annotation.Nullable)

Example 13 with GetArtifactsException

use of com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException in project intellij by bazelbuild.

the class BuildPluginBeforeRunTaskProvider method executeTask.

@Override
public final boolean executeTask(final DataContext dataContext, final RunConfiguration configuration, final ExecutionEnvironment env, Task task) {
    if (!canExecuteTask(configuration, task)) {
        return false;
    }
    BlazeUserSettings userSettings = BlazeUserSettings.getInstance();
    return Scope.root(context -> {
        WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
        context.push(new ExperimentScope()).push(new ProblemsViewScope(project, userSettings.getShowProblemsViewOnRun())).push(new BlazeConsoleScope.Builder(project).setPopupBehavior(userSettings.getShowBlazeConsoleOnRun()).addConsoleFilters(new IssueOutputFilter(project, workspaceRoot, ContextType.BeforeRunTask, true)).build()).push(new ToolWindowScope.Builder(project, new com.google.idea.blaze.base.toolwindow.Task(project, "Build Plugin Jar", com.google.idea.blaze.base.toolwindow.Task.Type.BEFORE_LAUNCH)).setPopupBehavior(userSettings.getShowBlazeConsoleOnRun()).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, WorkspaceRoot.fromProject(project), ContextType.BeforeRunTask)).build()).push(new IdeaLogScope());
        BlazeIntellijPluginDeployer deployer = env.getUserData(BlazeIntellijPluginDeployer.USER_DATA_KEY);
        if (deployer == null) {
            IssueOutput.error("Could not find BlazeIntellijPluginDeployer in env.").submit(context);
            return false;
        }
        deployer.buildStarted();
        final ProjectViewSet projectViewSet = ProjectViewManager.getInstance(project).getProjectViewSet();
        if (projectViewSet == null) {
            IssueOutput.error("Could not load project view. Please resync project").submit(context);
            return false;
        }
        final ScopedTask<Void> buildTask = new ScopedTask<Void>(context) {

            @Override
            protected Void execute(BlazeContext context) {
                String binaryPath = Blaze.getBuildSystemProvider(project).getBinaryPath(project);
                BlazeIntellijPluginConfiguration config = (BlazeIntellijPluginConfiguration) configuration;
                ListenableFuture<String> executionRootFuture = BlazeInfoRunner.getInstance().runBlazeInfo(context, binaryPath, workspaceRoot, config.getBlazeFlagsState().getFlagsForExternalProcesses(), BlazeInfo.EXECUTION_ROOT_KEY);
                String executionRoot;
                try {
                    executionRoot = executionRootFuture.get();
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    context.setCancelled();
                    return null;
                } catch (ExecutionException e) {
                    IssueOutput.error(e.getMessage()).submit(context);
                    context.setHasError();
                    return null;
                }
                if (executionRoot == null) {
                    IssueOutput.error("Could not determine execution root").submit(context);
                    return null;
                }
                BlazeProjectData blazeProjectData = BlazeProjectDataManager.getInstance(project).getBlazeProjectData();
                if (blazeProjectData == null) {
                    IssueOutput.error("Could not determine execution root").submit(context);
                    return null;
                }
                // expects the outputs to be available locally
                try (BuildResultHelper buildResultHelper = BuildResultHelperProvider.createForLocalBuild(project)) {
                    BlazeCommand command = BlazeCommand.builder(binaryPath, BlazeCommandName.BUILD).addTargets(config.getTargets()).addBlazeFlags(BlazeFlags.blazeFlags(project, projectViewSet, BlazeCommandName.BUILD, context, BlazeInvocationContext.runConfigContext(ExecutorType.fromExecutor(env.getExecutor()), config.getType(), true))).addBlazeFlags(config.getBlazeFlagsState().getFlagsForExternalProcesses()).addExeFlags(config.getExeFlagsState().getFlagsForExternalProcesses()).addBlazeFlags(buildResultHelper.getBuildFlags()).build();
                    if (command == null || context.hasErrors() || context.isCancelled()) {
                        return null;
                    }
                    SaveUtil.saveAllFiles();
                    int retVal = ExternalTask.builder(workspaceRoot).addBlazeCommand(command).context(context).stderr(LineProcessingOutputStream.of(BlazeConsoleLineProcessorProvider.getAllStderrLineProcessors(context))).build().run();
                    if (retVal != 0) {
                        context.setHasError();
                    }
                    ListenableFuture<Void> unusedFuture = FileCaches.refresh(project, context, BlazeBuildOutputs.noOutputs(BuildResult.fromExitCode(retVal)));
                    try {
                        deployer.reportBuildComplete(new File(executionRoot), buildResultHelper);
                    } catch (GetArtifactsException e) {
                        IssueOutput.error("Failed to get build artifacts: " + e.getMessage()).submit(context);
                        return null;
                    }
                    return null;
                }
            }
        };
        ListenableFuture<Void> buildFuture = ProgressiveTaskWithProgressIndicator.builder(project, "Executing blaze build for IntelliJ plugin jar").submitTaskWithResult(buildTask);
        try {
            Futures.getChecked(buildFuture, ExecutionException.class);
        } catch (ExecutionException e) {
            context.setHasError();
        } catch (CancellationException e) {
            context.setCancelled();
        }
        if (context.hasErrors() || context.isCancelled()) {
            return false;
        }
        return true;
    });
}
Also used : ExternalTask(com.google.idea.blaze.base.async.process.ExternalTask) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) BeforeRunTask(com.intellij.execution.BeforeRunTask) WorkspaceRoot(com.google.idea.blaze.base.model.primitives.WorkspaceRoot) BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) BuildResultHelper(com.google.idea.blaze.base.command.buildresult.BuildResultHelper) GetArtifactsException(com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException) ExecutionException(java.util.concurrent.ExecutionException) ProjectViewSet(com.google.idea.blaze.base.projectview.ProjectViewSet) IssueOutputFilter(com.google.idea.blaze.base.issueparser.IssueOutputFilter) ExperimentScope(com.google.idea.blaze.base.experiments.ExperimentScope) BlazeCommand(com.google.idea.blaze.base.command.BlazeCommand) ToolWindowScope(com.google.idea.blaze.base.scope.scopes.ToolWindowScope) ScopedTask(com.google.idea.blaze.base.scope.ScopedTask) IdeaLogScope(com.google.idea.blaze.base.scope.scopes.IdeaLogScope) BlazeUserSettings(com.google.idea.blaze.base.settings.BlazeUserSettings) ProblemsViewScope(com.google.idea.blaze.base.scope.scopes.ProblemsViewScope) CancellationException(java.util.concurrent.CancellationException) BlazeProjectData(com.google.idea.blaze.base.model.BlazeProjectData) File(java.io.File)

Aggregations

GetArtifactsException (com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException)13 File (java.io.File)11 BuildResultHelper (com.google.idea.blaze.base.command.buildresult.BuildResultHelper)10 BuildResult (com.google.idea.blaze.base.sync.aspects.BuildResult)9 WorkspaceRoot (com.google.idea.blaze.base.model.primitives.WorkspaceRoot)8 ImmutableList (com.google.common.collect.ImmutableList)7 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)7 BlazeCommandName (com.google.idea.blaze.base.command.BlazeCommandName)7 BlazeProjectData (com.google.idea.blaze.base.model.BlazeProjectData)7 CancellationException (java.util.concurrent.CancellationException)7 BlazeInvocationContext (com.google.idea.blaze.base.command.BlazeInvocationContext)6 BlazeArtifact (com.google.idea.blaze.base.command.buildresult.BlazeArtifact)6 BuildResultHelperProvider (com.google.idea.blaze.base.command.buildresult.BuildResultHelperProvider)6 Label (com.google.idea.blaze.base.model.primitives.Label)6 ExecutorType (com.google.idea.blaze.base.run.ExecutorType)6 SaveUtil (com.google.idea.blaze.base.util.SaveUtil)6 Project (com.intellij.openapi.project.Project)6 Nullable (javax.annotation.Nullable)6 BlazeCommand (com.google.idea.blaze.base.command.BlazeCommand)5 StatusOutput (com.google.idea.blaze.base.scope.output.StatusOutput)5