Search in sources :

Example 11 with WildcardTargetPattern

use of com.google.idea.blaze.base.model.primitives.WildcardTargetPattern in project intellij by bazelbuild.

the class PackageLister method getDirectoriesToPrefetch.

/**
 * The set of blaze packages to prefetch prior to traversing the directory tree.
 */
static Set<File> getDirectoriesToPrefetch(WorkspacePathResolver pathResolver, Collection<WildcardTargetPattern> includes, Predicate<WorkspacePath> excluded) {
    Set<WorkspacePath> prefetchPaths = new HashSet<>();
    for (WildcardTargetPattern pattern : includes) {
        WorkspacePath workspacePath = pattern.getBasePackage();
        if (excluded.test(workspacePath)) {
            continue;
        }
        prefetchPaths.add(workspacePath);
    }
    return WorkspacePathUtil.calculateMinimalWorkspacePaths(prefetchPaths).stream().map(pathResolver::resolveToFile).collect(Collectors.toSet());
}
Also used : WorkspacePath(com.google.idea.blaze.base.model.primitives.WorkspacePath) WildcardTargetPattern(com.google.idea.blaze.base.model.primitives.WildcardTargetPattern) HashSet(java.util.HashSet)

Example 12 with WildcardTargetPattern

use of com.google.idea.blaze.base.model.primitives.WildcardTargetPattern in project intellij by bazelbuild.

the class PackageLister method expandPackageTargets.

/**
 * Expands all-in-package-recursive wildcard targets into all-in-single-package targets by
 * traversing the file system, looking for child blaze packages.
 *
 * <p>Returns null if directory traversal failed or was cancelled.
 */
@Nullable
static Map<TargetExpression, List<TargetExpression>> expandPackageTargets(BuildSystemProvider provider, BlazeContext context, WorkspacePathResolver pathResolver, Collection<WildcardTargetPattern> wildcardPatterns) {
    List<ListenableFuture<Entry<TargetExpression, List<TargetExpression>>>> futures = Lists.newArrayList();
    for (WildcardTargetPattern pattern : wildcardPatterns) {
        if (!pattern.isRecursive() || pattern.toString().startsWith("-")) {
            continue;
        }
        File dir = pathResolver.resolveToFile(pattern.getBasePackage());
        if (!FileOperationProvider.getInstance().isDirectory(dir)) {
            continue;
        }
        futures.add(FetchExecutor.EXECUTOR.submit(() -> {
            List<TargetExpression> expandedTargets = new ArrayList<>();
            traversePackageRecursively(provider, pathResolver, dir, expandedTargets);
            return Maps.immutableEntry(pattern.originalPattern, expandedTargets);
        }));
    }
    if (futures.isEmpty()) {
        return ImmutableMap.of();
    }
    FutureResult<List<Entry<TargetExpression, List<TargetExpression>>>> result = FutureUtil.waitForFuture(context, Futures.allAsList(futures)).withProgressMessage("Expanding wildcard target patterns...").timed("ExpandWildcardTargets", EventType.Other).onError("Expanding wildcard target patterns failed").run();
    if (!result.success()) {
        return null;
    }
    return result.result().stream().collect(Collectors.toMap(Entry::getKey, Entry::getValue, (x, y) -> x));
}
Also used : BlazeContext(com.google.idea.blaze.base.scope.BlazeContext) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Lists(com.google.common.collect.Lists) Map(java.util.Map) TargetExpression(com.google.idea.blaze.base.model.primitives.TargetExpression) WorkspacePathResolver(com.google.idea.blaze.base.sync.workspace.WorkspacePathResolver) Nullable(javax.annotation.Nullable) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) WorkspacePathUtil(com.google.idea.blaze.base.util.WorkspacePathUtil) Collection(java.util.Collection) BuildSystemProvider(com.google.idea.blaze.base.bazel.BuildSystemProvider) FutureUtil(com.google.idea.blaze.base.async.FutureUtil) FutureResult(com.google.idea.blaze.base.async.FutureUtil.FutureResult) Set(java.util.Set) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) FileOperationProvider(com.google.idea.blaze.base.io.FileOperationProvider) File(java.io.File) Futures(com.google.common.util.concurrent.Futures) List(java.util.List) WildcardTargetPattern(com.google.idea.blaze.base.model.primitives.WildcardTargetPattern) Entry(java.util.Map.Entry) WorkspacePath(com.google.idea.blaze.base.model.primitives.WorkspacePath) FetchExecutor(com.google.idea.blaze.base.prefetch.FetchExecutor) EventType(com.google.idea.blaze.base.scope.scopes.TimingScope.EventType) WildcardTargetPattern(com.google.idea.blaze.base.model.primitives.WildcardTargetPattern) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) TargetExpression(com.google.idea.blaze.base.model.primitives.TargetExpression) ArrayList(java.util.ArrayList) List(java.util.List) File(java.io.File) Nullable(javax.annotation.Nullable)

Aggregations

WildcardTargetPattern (com.google.idea.blaze.base.model.primitives.WildcardTargetPattern)12 TargetExpression (com.google.idea.blaze.base.model.primitives.TargetExpression)10 WorkspacePath (com.google.idea.blaze.base.model.primitives.WorkspacePath)8 Test (org.junit.Test)8 ExpandedTargetsResult (com.google.idea.blaze.base.sync.sharding.WildcardTargetExpander.ExpandedTargetsResult)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 List (java.util.List)2 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 Lists (com.google.common.collect.Lists)1 Maps (com.google.common.collect.Maps)1 Futures (com.google.common.util.concurrent.Futures)1 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)1 FutureUtil (com.google.idea.blaze.base.async.FutureUtil)1 FutureResult (com.google.idea.blaze.base.async.FutureUtil.FutureResult)1 BuildSystemProvider (com.google.idea.blaze.base.bazel.BuildSystemProvider)1 FileOperationProvider (com.google.idea.blaze.base.io.FileOperationProvider)1 FetchExecutor (com.google.idea.blaze.base.prefetch.FetchExecutor)1 BlazeContext (com.google.idea.blaze.base.scope.BlazeContext)1