use of com.google.idea.blaze.base.settings.BlazeUserSettings.FocusBehavior 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, BuildSystem buildSystem) {
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(project, taskName, Task.Type.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;
}
WorkspaceRoot workspaceRoot = WorkspaceRoot.fromProject(project);
SaveUtil.saveAllFiles();
BlazeBuildListener.EP_NAME.extensions().forEach(e -> e.buildStarting(project));
BuildInvoker buildInvoker = buildSystem.getBuildInvoker(project, context);
ShardedTargetsResult shardedTargets = BlazeBuildTargetSharder.expandAndShardTargets(project, context, workspaceRoot, projectView, projectData.getWorkspacePathResolver(), targets, buildInvoker, SyncStrategy.SERIAL);
if (shardedTargets.buildResult.status == BuildResult.Status.FATAL_ERROR) {
return null;
}
BlazeBuildOutputs buildOutputs = BlazeIdeInterface.getInstance().build(project, context, workspaceRoot, projectData.getBlazeVersionData(), buildInvoker, projectView, shardedTargets.shardedTargets, projectData.getWorkspaceLanguageSettings(), ImmutableSet.of(OutputGroup.COMPILE), BlazeInvocationContext.OTHER_CONTEXT);
refreshFileCachesAndNotifyListeners(context, buildOutputs, project);
if (buildOutputs.buildResult.status != BuildResult.Status.SUCCESS) {
context.setHasError();
}
return null;
}
});
}
use of com.google.idea.blaze.base.settings.BlazeUserSettings.FocusBehavior in project intellij by bazelbuild.
the class FastBuildConfigurationRunner method executeBeforeRunTask.
@Override
public boolean executeBeforeRunTask(ExecutionEnvironment env) {
if (!canRun(env.getRunProfile())) {
return true;
}
Project project = env.getProject();
BlazeCommandRunConfiguration configuration = BlazeCommandRunConfigurationRunner.getBlazeConfig(env.getRunProfile());
BlazeCommandRunConfigurationCommonState handlerState = (BlazeCommandRunConfigurationCommonState) configuration.getHandler().getState();
checkState(configuration.getSingleTarget() != null);
Label label = (Label) configuration.getSingleTarget();
String binaryPath = handlerState.getBlazeBinaryState().getBlazeBinary() != null ? handlerState.getBlazeBinaryState().getBlazeBinary() : Blaze.getBuildSystemProvider(project).getBinaryPath(project);
SaveUtil.saveAllFiles();
FastBuildService buildService = FastBuildService.getInstance(project);
Future<FastBuildInfo> buildFuture = null;
FocusBehavior consolePopupBehavior = BlazeUserSettings.getInstance().getShowBlazeConsoleOnRun();
FocusBehavior problemsViewFocus = BlazeUserSettings.getInstance().getShowProblemsViewOnRun();
BlazeContext context = BlazeContext.create().push(new ToolWindowScope.Builder(project, new Task(project, "Fast Build " + label.targetName(), Task.Type.FAST_BUILD)).setPopupBehavior(consolePopupBehavior).setIssueParsers(BlazeIssueParser.defaultIssueParsers(project, WorkspaceRoot.fromProject(project), ContextType.RunConfiguration)).build()).push(new ProblemsViewScope(project, problemsViewFocus)).push(new IdeaLogScope()).push(new BlazeConsoleScope.Builder(project).setPopupBehavior(consolePopupBehavior).addConsoleFilters(new IssueOutputFilter(project, WorkspaceRoot.fromProject(project), ContextType.RunConfiguration, /* linkToBlazeConsole= */
true)).build()).push(new FastBuildLogDataScope());
try {
buildFuture = buildService.createBuild(context, label, binaryPath, handlerState.getBlazeFlagsState().getFlagsForExternalProcesses());
FastBuildInfo fastBuildInfo = buildFuture.get();
env.getCopyableUserData(BUILD_INFO_KEY).set(fastBuildInfo);
env.getCopyableUserData(BLAZE_CONTEXT).set(context);
return true;
} catch (InterruptedException e) {
buildFuture.cancel(/* mayInterruptIfRunning= */
true);
Thread.currentThread().interrupt();
} catch (CancellationException e) {
ExecutionUtil.handleExecutionError(env.getProject(), env.getExecutor().getToolWindowId(), env.getRunProfile(), new RunCanceledByUserException());
} catch (FastBuildException e) {
if (!(e instanceof BlazeBuildError)) {
// no need to log blaze build errors; they're expected
logger.warn(e);
}
ExecutionUtil.handleExecutionError(env, new ExecutionException(e));
} catch (java.util.concurrent.ExecutionException e) {
logger.warn(e);
if (e.getCause() instanceof FastBuildIncrementalCompileException) {
handleJavacError(env, project, label, buildService, (FastBuildIncrementalCompileException) e.getCause());
} else {
ExecutionUtil.handleExecutionError(env, new ExecutionException(e.getCause()));
}
}
// Fall-through for all exceptions. If no exception was thrown, we return from the try{} block.
context.endScope();
return false;
}
use of com.google.idea.blaze.base.settings.BlazeUserSettings.FocusBehavior 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;
}
});
}
Aggregations