Skip to content

Commit

Permalink
Make failures bazel mod dump_repo_mapping failures silent
Browse files Browse the repository at this point in the history
  • Loading branch information
mtoader committed Sep 27, 2024
1 parent d1bd4a8 commit a351d2a
Showing 1 changed file with 29 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.google.idea.blaze.base.command.mod.BlazeModException;
import com.google.idea.blaze.base.command.mod.BlazeModRunner;
import com.google.idea.blaze.base.scope.BlazeContext;
import com.google.idea.blaze.base.scope.output.IssueOutput;
import com.google.idea.blaze.base.scope.output.StatusOutput;
import com.google.idea.blaze.base.settings.Blaze;
import com.google.idea.blaze.base.settings.BlazeImportSettings;
Expand All @@ -35,6 +36,8 @@
import com.intellij.openapi.util.registry.Registry;
import org.jetbrains.annotations.Nullable;

import javax.annotation.Nonnegative;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.concurrent.ExecutionException;

Expand Down Expand Up @@ -79,63 +82,60 @@ public ListenableFuture<ExternalWorkspaceData> getExternalWorkspaceData(
// validate that bzlmod is enabled (technically this validates that the --enable_bzlmod is not
// changed from the default `true` aka set to false)
String starLarkSemantics = blazeInfo.getStarlarkSemantics();
if (starLarkSemantics == null || starLarkSemantics.isEmpty() || starLarkSemantics.contains("enable_bzlmod=false")) {
if (starLarkSemantics == null
|| starLarkSemantics.isEmpty()
|| starLarkSemantics.contains("enable_bzlmod=false")) {
return Futures.immediateFuture(ExternalWorkspaceData.EMPTY);
}

return BlazeExecutor.getInstance().submit(() -> {
ExternalWorkspaceData mapping = getCachedExternalWorkspaceData(context, blazeFlags);
if (mapping == null) {
throw new BlazeModException("Unable to get module mapping");
}
return mapping;
});
return BlazeExecutor.getInstance()
.submit(
() -> getCachedExternalWorkspaceData(context, blazeFlags));
}

private @Nullable ExternalWorkspaceData getCachedExternalWorkspaceData(
BlazeContext context,
List<String> blazeFlags) {
private @Nonnull ExternalWorkspaceData getCachedExternalWorkspaceData(
BlazeContext context, List<String> blazeFlags) {
if (externalWorkspaceData != null) {
logger.info("Using cached External Repository Mapping");
return externalWorkspaceData;
}
try {
BlazeImportSettings importSettings = BlazeImportSettingsManager.getInstance(project).getImportSettings();
BlazeImportSettings importSettings =
BlazeImportSettingsManager.getInstance(project).getImportSettings();
if (importSettings == null) {
return null;
return ExternalWorkspaceData.EMPTY;
}
BuildSystem.BuildInvoker buildInvoker =
Blaze.getBuildSystemProvider(project)
.getBuildSystem()
.getDefaultInvoker(project, context);

externalWorkspaceData = BlazeModRunner.getInstance()
.dumpRepoMapping(
project,
buildInvoker,
context,
importSettings.getBuildSystem(),
blazeFlags
).get();
return externalWorkspaceData;
externalWorkspaceData =
BlazeModRunner.getInstance()
.dumpRepoMapping(
project, buildInvoker, context, importSettings.getBuildSystem(), blazeFlags)
.get();
} catch (InterruptedException | ExecutionException e) {
logger.warn("Unable to run blaze mod dump_repo_mapping", e);
return null;
context.handleExceptionAsWarning(
"Failed to run `blaze mod dump_repo_mapping` (completion of labels from module provided repos will be unavailable)",
e);
externalWorkspaceData = ExternalWorkspaceData.EMPTY;
}

return externalWorkspaceData;
}

public void invalidate(BlazeContext context, SyncMode syncMode) {
logger.info("Invalidating External Repository Mapping info");
context.output(new StatusOutput(String.format("Invalidating External Repository Mapping info (%s)", syncMode)));
context.output(
new StatusOutput(
String.format("Invalidating External Repository Mapping info (%s)", syncMode)));
externalWorkspaceData = null;
}

public static final class Invalidator implements SyncListener {
@Override
public void onSyncStart(
Project project,
BlazeContext context,
SyncMode syncMode) {
public void onSyncStart(Project project, BlazeContext context, SyncMode syncMode) {
if (syncMode == SyncMode.FULL) {
ExternalWorkspaceDataProvider provider = ExternalWorkspaceDataProvider.getInstance(project);
if (provider != null) {
Expand Down

0 comments on commit a351d2a

Please sign in to comment.