Skip to content
This repository was archived by the owner on Sep 19, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/main/java/com/palantir/gradle/revapi/ResolveOldApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,14 @@ private static Optional<OldApi> resolveOldApiAcrossAllOldVersions(
return Optional.empty();
}

RevapiExtension.VersionFilter filter = extension.getOldVersionsFilter().get();
GroupAndName oldGroupAndName = extension.oldGroupAndName().get();

Map<Version, CouldNotResolveOldApiException> exceptionsPerVersion = new LinkedHashMap<>();
for (String oldVersionString : oldVersionStrings) {
if (!filter.test(oldVersionString)) {
continue;
}
GroupNameVersion oldGroupNameVersion = possiblyReplacedOldVersionFor(
config, oldGroupAndName.withVersion(Version.fromString(oldVersionString)));

Expand Down
23 changes: 23 additions & 0 deletions src/main/java/com/palantir/gradle/revapi/RevapiExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.palantir.gradle.revapi.config.GroupNameVersion;
import com.palantir.gradle.revapi.config.Version;
import java.util.Collections;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.gradle.api.Project;
import org.gradle.api.provider.ListProperty;
Expand All @@ -32,6 +33,7 @@ public class RevapiExtension {
private final Property<String> oldName;
private final ListProperty<String> oldVersions;
private final Provider<GroupAndName> oldGroupAndName;
private final Property<VersionFilter> oldVersionsFilter;

public RevapiExtension(Project project) {
this.oldGroup = project.getObjects().property(String.class);
Expand All @@ -45,6 +47,8 @@ public RevapiExtension(Project project) {
this.oldVersions.set(project.getProviders()
.provider(
() -> GitVersionUtils.previousGitTags(project).limit(3).collect(Collectors.toList())));
this.oldVersionsFilter = project.getObjects().property(VersionFilter.class);
this.oldVersionsFilter.convention(VersionFilter.passThrough());

this.oldGroupAndName = project.provider(() ->
GroupAndName.builder().group(oldGroup.get()).name(oldName.get()).build());
Expand All @@ -62,6 +66,10 @@ public ListProperty<String> getOldVersions() {
return oldVersions;
}

public Property<VersionFilter> getOldVersionsFilter() {
return oldVersionsFilter;
}

public void setOldVersion(String oldVersionValue) {
oldVersions.set(Collections.singletonList(oldVersionValue));
}
Expand All @@ -75,4 +83,19 @@ GroupNameVersion oldGroupNameVersion() {
Provider<GroupAndName> oldGroupAndName() {
return oldGroupAndName;
}

/**
* Filters old versions before considering them. Any 'v' prefix will be stripped before testing.
*/
public interface VersionFilter extends Predicate<String> {
static VersionFilter passThrough() {
// Gradle can't cache lambdas
return new VersionFilter() {
@Override
public boolean test(final String _version) {
return true;
}
};
}
}
}