Skip to content

Commit

Permalink
Add Check Compatibility Task
Browse files Browse the repository at this point in the history
  • Loading branch information
tylerbwong committed Nov 14, 2020
1 parent 5203e92 commit 76f296e
Show file tree
Hide file tree
Showing 16 changed files with 340 additions and 107 deletions.
16 changes: 14 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,21 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
- name: Set Up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Run Build
run: ./gradlew :plugin:build
run: ./gradlew :plugin:build

check-compatibility:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
- name: Set Up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Check Compatibility
run: ./gradlew metalavaCheckCompatibility
22 changes: 22 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ apply plugin: "me.tylerbwong.gradle.metalava"

### Usage

Run `./gradlew metalavaSignature` to generate signature descriptor files for each module the plugin is applied to.
This plugin registers the following tasks:

`metalavaSignaturePublish` - Generates a Metalava signature descriptor file at a specified location.
`metalavaCheckCompatibility` - Checks API compatibility between the code base and the current API.

The plugin can also be configured using the `metalava` extension block

Expand All @@ -70,8 +73,8 @@ plugins {

metalava {
documentation = Documentation.PUBLIC
shouldOutputKotlinNulls = false
shouldIncludeSignatureVersion = false
outputKotlinNulls = false
includeSignatureVersion = false
...
}
```
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ buildscript {
dependencies {
classpath("com.android.tools.build:gradle:4.1.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")
classpath("me.tylerbwong.gradle:metalava-gradle:0.1.0-alpha06")
classpath("me.tylerbwong.gradle:metalava-gradle:0.1.0-alpha07")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,36 +42,42 @@ package me.tylerbwong.gradle.metalava.extension {
method public final me.tylerbwong.gradle.metalava.Documentation getDocumentation();
method public final String getFilename();
method public final me.tylerbwong.gradle.metalava.Format getFormat();
method public final java.util.Set<java.lang.String> getHideAnnotations();
method public final java.util.Set<java.lang.String> getHiddenAnnotations();
method public final boolean getIncludeSignatureVersion();
method public final org.gradle.api.JavaVersion getJavaSourceLevel();
method public final String? getMetalavaJarPath();
method public final boolean getShouldIncludeSignatureVersion();
method public final boolean getShouldOmitCommonPackages();
method public final boolean getShouldOutputDefaultValues();
method public final boolean getShouldOutputKotlinNulls();
method public final boolean getOmitCommonPackages();
method public final boolean getOutputDefaultValues();
method public final boolean getOutputKotlinNulls();
method public final boolean getReportLintsAsErrors();
method public final boolean getReportWarningsAsErrors();
method public final me.tylerbwong.gradle.metalava.Signature getSignature();
method public final String getVersion();
method public final void setDocumentation(me.tylerbwong.gradle.metalava.Documentation p);
method public final void setFilename(String p);
method public final void setFormat(me.tylerbwong.gradle.metalava.Format p);
method public final void setIncludeSignatureVersion(boolean p);
method public final void setJavaSourceLevel(org.gradle.api.JavaVersion p);
method public final void setMetalavaJarPath(String? p);
method public final void setShouldIncludeSignatureVersion(boolean p);
method public final void setShouldOmitCommonPackages(boolean p);
method public final void setShouldOutputDefaultValues(boolean p);
method public final void setShouldOutputKotlinNulls(boolean p);
method public final void setOmitCommonPackages(boolean p);
method public final void setOutputDefaultValues(boolean p);
method public final void setOutputKotlinNulls(boolean p);
method public final void setReportLintsAsErrors(boolean p);
method public final void setReportWarningsAsErrors(boolean p);
method public final void setSignature(me.tylerbwong.gradle.metalava.Signature p);
method public final void setVersion(String p);
property public final me.tylerbwong.gradle.metalava.Documentation documentation;
property public final String filename;
property public final me.tylerbwong.gradle.metalava.Format format;
property public final java.util.Set<java.lang.String> hideAnnotations;
property public final java.util.Set<java.lang.String> hiddenAnnotations;
property public final boolean includeSignatureVersion;
property public final org.gradle.api.JavaVersion javaSourceLevel;
property public final String? metalavaJarPath;
property public final boolean shouldIncludeSignatureVersion;
property public final boolean shouldOmitCommonPackages;
property public final boolean shouldOutputDefaultValues;
property public final boolean shouldOutputKotlinNulls;
property public final boolean omitCommonPackages;
property public final boolean outputDefaultValues;
property public final boolean outputKotlinNulls;
property public final boolean reportLintsAsErrors;
property public final boolean reportWarningsAsErrors;
property public final me.tylerbwong.gradle.metalava.Signature signature;
property public final String version;
}
Expand Down
95 changes: 95 additions & 0 deletions plugin/api/0.1.0-alpha08-SNAPSHOT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// Signature format: 3.0
package me.tylerbwong.gradle.metalava {

public enum Documentation {
method public String toString();
method public static me.tylerbwong.gradle.metalava.Documentation valueOf(String name);
method public static me.tylerbwong.gradle.metalava.Documentation[] values();
enum_constant public static final me.tylerbwong.gradle.metalava.Documentation HIDDEN;
enum_constant public static final me.tylerbwong.gradle.metalava.Documentation PACKAGE;
enum_constant public static final me.tylerbwong.gradle.metalava.Documentation PRIVATE;
enum_constant public static final me.tylerbwong.gradle.metalava.Documentation PROTECTED;
enum_constant public static final me.tylerbwong.gradle.metalava.Documentation PUBLIC;
}

public enum Format {
method public String toString();
method public static me.tylerbwong.gradle.metalava.Format valueOf(String name);
method public static me.tylerbwong.gradle.metalava.Format[] values();
enum_constant public static final me.tylerbwong.gradle.metalava.Format V1;
enum_constant public static final me.tylerbwong.gradle.metalava.Format V2;
enum_constant public static final me.tylerbwong.gradle.metalava.Format V3;
}

public enum Signature {
method public String toString();
method public static me.tylerbwong.gradle.metalava.Signature valueOf(String name);
method public static me.tylerbwong.gradle.metalava.Signature[] values();
enum_constant public static final me.tylerbwong.gradle.metalava.Signature API;
enum_constant public static final me.tylerbwong.gradle.metalava.Signature DEX_API;
enum_constant public static final me.tylerbwong.gradle.metalava.Signature DEX_API_MAPPING;
enum_constant public static final me.tylerbwong.gradle.metalava.Signature PRIVATE_API;
enum_constant public static final me.tylerbwong.gradle.metalava.Signature PRIVATE_DEX_API;
enum_constant public static final me.tylerbwong.gradle.metalava.Signature REMOVED_API;
}

}

package me.tylerbwong.gradle.metalava.extension {

public class MetalavaExtension {
ctor public MetalavaExtension();
method public final me.tylerbwong.gradle.metalava.Documentation getDocumentation();
method public final String getFilename();
method public final me.tylerbwong.gradle.metalava.Format getFormat();
method public final java.util.Set<java.lang.String> getHiddenAnnotations();
method public final boolean getIncludeSignatureVersion();
method public final org.gradle.api.JavaVersion getJavaSourceLevel();
method public final String? getMetalavaJarPath();
method public final boolean getOmitCommonPackages();
method public final boolean getOutputDefaultValues();
method public final boolean getOutputKotlinNulls();
method public final boolean getReportLintsAsErrors();
method public final boolean getReportWarningsAsErrors();
method public final me.tylerbwong.gradle.metalava.Signature getSignature();
method public final String getVersion();
method public final void setDocumentation(me.tylerbwong.gradle.metalava.Documentation p);
method public final void setFilename(String p);
method public final void setFormat(me.tylerbwong.gradle.metalava.Format p);
method public final void setIncludeSignatureVersion(boolean p);
method public final void setJavaSourceLevel(org.gradle.api.JavaVersion p);
method public final void setMetalavaJarPath(String? p);
method public final void setOmitCommonPackages(boolean p);
method public final void setOutputDefaultValues(boolean p);
method public final void setOutputKotlinNulls(boolean p);
method public final void setReportLintsAsErrors(boolean p);
method public final void setReportWarningsAsErrors(boolean p);
method public final void setSignature(me.tylerbwong.gradle.metalava.Signature p);
method public final void setVersion(String p);
property public final me.tylerbwong.gradle.metalava.Documentation documentation;
property public final String filename;
property public final me.tylerbwong.gradle.metalava.Format format;
property public final java.util.Set<java.lang.String> hiddenAnnotations;
property public final boolean includeSignatureVersion;
property public final org.gradle.api.JavaVersion javaSourceLevel;
property public final String? metalavaJarPath;
property public final boolean omitCommonPackages;
property public final boolean outputDefaultValues;
property public final boolean outputKotlinNulls;
property public final boolean reportLintsAsErrors;
property public final boolean reportWarningsAsErrors;
property public final me.tylerbwong.gradle.metalava.Signature signature;
property public final String version;
}

}

package me.tylerbwong.gradle.metalava.plugin {

public final class MetalavaPlugin implements org.gradle.api.Plugin<org.gradle.api.Project> {
ctor public MetalavaPlugin();
method public void apply(org.gradle.api.Project target);
}

}

2 changes: 1 addition & 1 deletion plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
}

group = "me.tylerbwong.gradle"
version = "0.1.0-alpha07-SNAPSHOT"
version = "0.1.0-alpha08-SNAPSHOT"

gradlePlugin {
plugins {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,31 +45,41 @@ open class MetalavaExtension {
* Controls whether nullness annotations should be formatted as in Kotlin (with "?" for nullable types, "" for non
* nullable types, and "!" for unknown. The default is yes.
*/
var shouldOutputKotlinNulls = true
var outputKotlinNulls = true

/**
* Controls whether default values should be included in signature files. The default is yes.
*/
var shouldOutputDefaultValues = true
var outputDefaultValues = true

/**
* Skip common package prefixes like java.lang.* and kotlin.* in signature files, along with packages for well known
* annotations like @Nullable and @NonNull.
*/
var shouldOmitCommonPackages = true
var omitCommonPackages = true

/**
* Whether the signature files should include a comment listing the format version of the signature file.
*/
var shouldIncludeSignatureVersion = true
var includeSignatureVersion = true

/**
* Remove the given packages from the API even if they have not been marked with @hide.
*/
val hidePackages = mutableSetOf<String>()
val hiddenPackages = mutableSetOf<String>()

/**
* Treat any elements annotated with the given annotation as hidden.
*/
val hideAnnotations = mutableSetOf<String>()
val hiddenAnnotations = mutableSetOf<String>()

/**
* Promote all warnings to errors.
*/
var reportWarningsAsErrors = false

/**
* Promote all API lint warnings to errors.
*/
var reportLintsAsErrors = false
}
Loading

0 comments on commit 76f296e

Please sign in to comment.