Search in sources :

Example 6 with Spec

use of org.gradle.api.specs.Spec in project gradle by gradle.

the class DefaultCopySpec method filesMatching.

public CopySpec filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) {
    if (!patterns.iterator().hasNext()) {
        throw new InvalidUserDataException("must provide at least one pattern to match");
    }
    List<Spec> matchers = new ArrayList<Spec>();
    for (String pattern : patterns) {
        matchers.add(PatternMatcherFactory.getPatternMatcher(true, isCaseSensitive(), pattern));
    }
    Spec unionMatcher = Specs.union(matchers.toArray(new Spec[matchers.size()]));
    return eachFile(new MatchingCopyAction(unionMatcher, action));
}
Also used : InvalidUserDataException(org.gradle.api.InvalidUserDataException) ArrayList(java.util.ArrayList) CopySpec(org.gradle.api.file.CopySpec) CopyProcessingSpec(org.gradle.api.file.CopyProcessingSpec) Spec(org.gradle.api.specs.Spec)

Example 7 with Spec

use of org.gradle.api.specs.Spec in project gradle by gradle.

the class DefaultDomainObjectCollectionTest method filteredCollectionExecutesActionWhenMatchingObjectAdded.

@Test
public void filteredCollectionExecutesActionWhenMatchingObjectAdded() {
    @SuppressWarnings("unchecked") final Action<CharSequence> action = context.mock(Action.class);
    context.checking(new Expectations() {

        {
            oneOf(action).execute("a");
        }
    });
    Spec<CharSequence> spec = new Spec<CharSequence>() {

        public boolean isSatisfiedBy(CharSequence element) {
            return !element.equals("b");
        }
    };
    container.matching(spec).whenObjectAdded(action);
    container.add("a");
    container.add("b");
}
Also used : Expectations(org.jmock.Expectations) Spec(org.gradle.api.specs.Spec) Test(org.junit.Test)

Example 8 with Spec

use of org.gradle.api.specs.Spec in project gradle by gradle.

the class DefaultDomainObjectCollectionTest method canGetFilteredCollectionContainingAllObjectsWhichMeetSpec.

@Test
public void canGetFilteredCollectionContainingAllObjectsWhichMeetSpec() {
    Spec<CharSequence> spec = new Spec<CharSequence>() {

        public boolean isSatisfiedBy(CharSequence element) {
            return !element.equals("b");
        }
    };
    TestClosure testClosure = new TestClosure() {

        public Object call(Object param) {
            return !param.equals("b");
        }
    };
    container.add("a");
    container.add("b");
    container.add("c");
    assertThat(toList(container.matching(spec)), equalTo(toList((CharSequence) "a", "c")));
    assertThat(toList(container.matching(TestUtil.toClosure(testClosure))), equalTo(toList((CharSequence) "a", "c")));
}
Also used : TestClosure(org.gradle.util.TestClosure) Spec(org.gradle.api.specs.Spec) Test(org.junit.Test)

Example 9 with Spec

use of org.gradle.api.specs.Spec in project gradle by gradle.

the class TwirlCompiler method findTemplateFormat.

private TwirlTemplateFormat findTemplateFormat(TwirlCompileSpec spec, final File sourceFile) {
    Spec<TwirlTemplateFormat> hasExtension = new Spec<TwirlTemplateFormat>() {

        @Override
        public boolean isSatisfiedBy(TwirlTemplateFormat format) {
            return FileUtils.hasExtensionIgnoresCase(sourceFile.getName(), "." + format.getExtension());
        }
    };
    TwirlTemplateFormat format = CollectionUtils.findFirst(adapter.getDefaultTemplateFormats(), hasExtension);
    if (format == null) {
        format = CollectionUtils.findFirst(spec.getUserTemplateFormats(), hasExtension);
    }
    Preconditions.checkNotNull(format, "Twirl compiler could not find a matching template for '%s'.", sourceFile.getName());
    return format;
}
Also used : Spec(org.gradle.api.specs.Spec) TwirlTemplateFormat(org.gradle.language.twirl.TwirlTemplateFormat)

Example 10 with Spec

use of org.gradle.api.specs.Spec in project atlas by alibaba.

the class AtlasDependencyGraph method computeArtifactCollection.

public static ArtifactCollection computeArtifactCollection(VariantScope variantScope, @NonNull AtlasAndroidArtifacts.ConsumedConfigType configType, @NonNull AndroidArtifacts.ArtifactScope scope, @NonNull AtlasAndroidArtifacts.AtlasArtifactType artifactType) {
    Configuration configuration;
    switch(configType) {
        case COMPILE_CLASSPATH:
            configuration = variantScope.getVariantData().getVariantDependency().getCompileClasspath();
            break;
        case RUNTIME_CLASSPATH:
            configuration = variantScope.getVariantData().getVariantDependency().getRuntimeClasspath();
            break;
        case BUNDLECOMPILE_CLASSPATH:
            configuration = variantScope.getGlobalScope().getProject().getConfigurations().maybeCreate(AtlasPlugin.BUNDLE_COMPILE);
            break;
        case ANNOTATION_PROCESSOR:
            configuration = variantScope.getVariantData().getVariantDependency().getAnnotationProcessorConfiguration();
            break;
        case METADATA_VALUES:
            configuration = variantScope.getVariantData().getVariantDependency().getMetadataValuesConfiguration();
            break;
        default:
            throw new RuntimeException("unknown ConfigType value");
    }
    Action<AttributeContainer> attributes = container -> container.attribute(ARTIFACT_TYPE, artifactType.getType());
    Spec<ComponentIdentifier> filter = getComponentFilter(scope);
    boolean lenientMode = Boolean.TRUE.equals(variantScope.getGlobalScope().getProjectOptions().get(BooleanOption.IDE_BUILD_MODEL_ONLY));
    ArtifactCollection artifacts = configuration.getIncoming().artifactView(config -> {
        config.attributes(attributes);
        if (filter != null) {
            config.componentFilter(filter);
        }
        // TODO somehow read the unresolved dependencies?
        config.lenient(lenientMode);
    }).getArtifacts();
    if (configType == AtlasAndroidArtifacts.ConsumedConfigType.RUNTIME_CLASSPATH && variantScope.getVariantConfiguration().getType() == VariantType.FEATURE && artifactType != AtlasAndroidArtifacts.AtlasArtifactType.FEATURE_TRANSITIVE_DEPS) {
        artifacts = new FilteredArtifactCollection(variantScope.getGlobalScope().getProject(), artifacts, computeArtifactCollection(variantScope, AtlasAndroidArtifacts.ConsumedConfigType.RUNTIME_CLASSPATH, scope, AtlasAndroidArtifacts.AtlasArtifactType.FEATURE_TRANSITIVE_DEPS).getArtifactFiles());
    }
    return artifacts;
}
Also used : ProjectComponentIdentifier(org.gradle.api.artifacts.component.ProjectComponentIdentifier) AtlasPlugin(com.taobao.android.builder.AtlasPlugin) AtlasAndroidArtifacts(com.android.build.gradle.internal.publishing.AtlasAndroidArtifacts) CreatingCache(com.android.ide.common.caching.CreatingCache) Matcher(java.util.regex.Matcher) FileUtils(com.android.utils.FileUtils) ResolvedVariantResult(org.gradle.api.artifacts.result.ResolvedVariantResult) com.google.common.collect(com.google.common.collect) MavenCoordinatesImpl(com.android.builder.dependency.MavenCoordinatesImpl) Artifact(org.gradle.api.component.Artifact) GraphItem(com.android.builder.model.level2.GraphItem) Project(org.gradle.api.Project) Nullable(com.android.annotations.Nullable) AndroidArtifacts(com.android.build.gradle.internal.publishing.AndroidArtifacts) BooleanOption(com.android.build.gradle.options.BooleanOption) ComponentArtifactIdentifier(org.gradle.api.artifacts.component.ComponentArtifactIdentifier) ArtifactCollection(org.gradle.api.artifacts.ArtifactCollection) FilteredArtifactCollection(com.android.build.gradle.internal.dependency.FilteredArtifactCollection) Spec(org.gradle.api.specs.Spec) NonNull(com.android.annotations.NonNull) VariantType(com.android.builder.core.VariantType) ARTIFACT_TYPE(com.android.build.gradle.internal.publishing.AndroidArtifacts.ARTIFACT_TYPE) com.android.build.gradle.internal.ide.level2(com.android.build.gradle.internal.ide.level2) Pattern(java.util.regex.Pattern) ResolvedArtifactResult(org.gradle.api.artifacts.result.ResolvedArtifactResult) EMPTY_DEPENDENCY_GRAPH(com.android.build.gradle.internal.ide.ModelBuilder.EMPTY_DEPENDENCY_GRAPH) JvmLibrary(org.gradle.jvm.JvmLibrary) java.util(java.util) SdkConstants(com.android.SdkConstants) OpaqueComponentArtifactIdentifier(org.gradle.internal.component.local.model.OpaqueComponentArtifactIdentifier) VariantAttr(com.android.build.gradle.internal.dependency.VariantAttr) ComponentIdentifier(org.gradle.api.artifacts.component.ComponentIdentifier) ConfigurationDependencyGraphs(com.android.build.gradle.internal.dependency.ConfigurationDependencyGraphs) VariantScope(com.android.build.gradle.internal.scope.VariantScope) EMPTY_DEPENDENCIES_IMPL(com.android.build.gradle.internal.ide.ModelBuilder.EMPTY_DEPENDENCIES_IMPL) Configuration(org.gradle.api.artifacts.Configuration) ImmutableCollectors(com.android.utils.ImmutableCollectors) DependencyHandler(org.gradle.api.artifacts.dsl.DependencyHandler) AttributeContainer(org.gradle.api.attributes.AttributeContainer) com.android.builder.model(com.android.builder.model) ArtifactResolutionQuery(org.gradle.api.artifacts.query.ArtifactResolutionQuery) SourcesArtifact(org.gradle.language.base.artifact.SourcesArtifact) Action(org.gradle.api.Action) Library(com.android.builder.model.level2.Library) File(java.io.File) ModuleComponentIdentifier(org.gradle.api.artifacts.component.ModuleComponentIdentifier) Consumer(java.util.function.Consumer) ArtifactCollectionWithExtraArtifact(com.android.build.gradle.internal.dependency.ArtifactCollectionWithExtraArtifact) JavaLibraryImpl(com.android.build.gradle.internal.ide.level2.JavaLibraryImpl) Preconditions(com.google.common.base.Preconditions) DependencyGraphs(com.android.builder.model.level2.DependencyGraphs) Configuration(org.gradle.api.artifacts.Configuration) ArtifactCollection(org.gradle.api.artifacts.ArtifactCollection) FilteredArtifactCollection(com.android.build.gradle.internal.dependency.FilteredArtifactCollection) ProjectComponentIdentifier(org.gradle.api.artifacts.component.ProjectComponentIdentifier) ComponentIdentifier(org.gradle.api.artifacts.component.ComponentIdentifier) ModuleComponentIdentifier(org.gradle.api.artifacts.component.ModuleComponentIdentifier) AttributeContainer(org.gradle.api.attributes.AttributeContainer) FilteredArtifactCollection(com.android.build.gradle.internal.dependency.FilteredArtifactCollection)

Aggregations

Spec (org.gradle.api.specs.Spec)25 Test (org.junit.Test)8 Task (org.gradle.api.Task)7 File (java.io.File)6 Project (org.gradle.api.Project)4 TestClosure (org.gradle.util.TestClosure)4 ArrayList (java.util.ArrayList)3 Set (java.util.Set)3 Expectations (org.jmock.Expectations)3 Callable (java.util.concurrent.Callable)2 Matcher (java.util.regex.Matcher)2 Pattern (java.util.regex.Pattern)2 Usage (org.gradle.api.attributes.Usage)2 FileTreeElement (org.gradle.api.file.FileTreeElement)2 TaskInternal (org.gradle.api.internal.TaskInternal)2 SourceSet (org.gradle.api.tasks.SourceSet)2 TaskAction (org.gradle.api.tasks.TaskAction)2 TaskContainer (org.gradle.api.tasks.TaskContainer)2 SdkConstants (com.android.SdkConstants)1 NonNull (com.android.annotations.NonNull)1