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));
}
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");
}
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")));
}
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;
}
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;
}
Aggregations