Skip to content

Commit

Permalink
Restrict Paparazzi's public API
Browse files Browse the repository at this point in the history
  • Loading branch information
John Rodriguez committed Jan 29, 2024
1 parent 3e7258f commit 1bca5c9
Show file tree
Hide file tree
Showing 61 changed files with 423 additions and 65 deletions.
8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ buildscript {

dependencies {
classpath libs.plugin.kotlin
classpath libs.plugin.kotlinApiDump
classpath libs.plugin.android
classpath libs.plugin.mavenPublish
classpath libs.plugin.dokka
classpath libs.plugin.versions
classpath libs.plugin.spotless
classpath libs.plugin.buildConfig
classpath libs.plugin.ksp
classpath libs.plugin.poko
classpath libs.grgit

// Normally you would declare a version here, but we use dependency substitution in
Expand All @@ -25,6 +27,12 @@ buildscript {
}
}

apply plugin: 'binary-compatibility-validator'

apiValidation {
ignoredProjects += ['libs', 'sample']
}

subprojects {
version = property("VERSION_NAME") as String

Expand Down
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ plugin-android = { module = "com.android.tools.build:gradle", version.ref = "agp
plugin-buildConfig = { module = "com.github.gmazzo.buildconfig:plugin", version = "5.3.5" }
plugin-dokka = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version = "1.9.10" }
plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
plugin-kotlinApiDump = { module = "org.jetbrains.kotlinx:binary-compatibility-validator", version = '0.13.2' }
plugin-ksp = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
plugin-mavenPublish = { module = "com.vanniktech:gradle-maven-publish-plugin", version = "0.27.0" }
plugin-poko = { module = "dev.drewhamilton.poko:poko-gradle-plugin", version = "0.15.2" }
plugin-spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version = "6.25.0" }
plugin-versions = { module = "com.github.ben-manes:gradle-versions-plugin", version = "0.51.0" }
3 changes: 3 additions & 0 deletions paparazzi-annotations/api/paparazzi-annotations.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
public abstract interface annotation class app/cash/paparazzi/annotations/Paparazzi : java/lang/annotation/Annotation {
}

27 changes: 27 additions & 0 deletions paparazzi-gradle-plugin/api/paparazzi-gradle-plugin.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
public final class app/cash/paparazzi/gradle/PaparazziPlugin : org/gradle/api/Plugin {
public fun <init> ()V
public synthetic fun apply (Ljava/lang/Object;)V
public fun apply (Lorg/gradle/api/Project;)V
}

public abstract class app/cash/paparazzi/gradle/PaparazziPlugin$PaparazziTask : org/gradle/api/DefaultTask {
public fun <init> ()V
public fun setTestNameIncludePatterns (Ljava/util/List;)Lapp/cash/paparazzi/gradle/PaparazziPlugin$PaparazziTask;
}

public abstract class app/cash/paparazzi/gradle/PrepareResourcesTask : org/gradle/api/DefaultTask {
public fun <init> ()V
public abstract fun getAarAssetDirs ()Lorg/gradle/api/file/ConfigurableFileCollection;
public abstract fun getAarExplodedDirs ()Lorg/gradle/api/file/ConfigurableFileCollection;
public abstract fun getArtifactFiles ()Lorg/gradle/api/file/ConfigurableFileCollection;
public abstract fun getCompileSdkVersion ()Lorg/gradle/api/provider/Property;
public abstract fun getModuleResourceDirs ()Lorg/gradle/api/provider/ListProperty;
public abstract fun getNonTransitiveRClassEnabled ()Lorg/gradle/api/provider/Property;
public abstract fun getPackageName ()Lorg/gradle/api/provider/Property;
public abstract fun getPaparazziResources ()Lorg/gradle/api/file/RegularFileProperty;
public abstract fun getProjectAssetDirs ()Lorg/gradle/api/provider/ListProperty;
public abstract fun getProjectResourceDirs ()Lorg/gradle/api/provider/ListProperty;
public abstract fun getTargetSdkVersion ()Lorg/gradle/api/provider/Property;
public final fun writeResourcesFile ()V
}

Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ class PaparazziPlugin : Plugin<Project> {
}
}

open class PaparazziTask : DefaultTask() {
abstract class PaparazziTask : DefaultTask() {
@Option(option = "tests", description = "Sets test class or method name to be included, '*' is supported.")
open fun setTestNameIncludePatterns(testNamePattern: List<String>): PaparazziTask {
project.tasks.withType(Test::class.java).configureEach {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ abstract class PrepareResourcesTask : DefaultTask() {
}

@JsonClass(generateAdapter = true)
data class Config(
internal data class Config(
val mainPackage: String,
val targetSdkVersion: String,
val platformDir: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import org.gradle.api.file.Directory
import org.gradle.api.file.FileCollection
import java.io.File

fun FileCollection.relativize(directory: Directory) = files.map(directory::relativize)
internal fun FileCollection.relativize(directory: Directory) = files.map(directory::relativize)

fun Directory.relativize(child: File): String {
internal fun Directory.relativize(child: File): String {
return asFile.toPath().relativize(child.toPath()).toFile().invariantSeparatorsPath
}
11 changes: 11 additions & 0 deletions paparazzi-preview-processor/api/paparazzi-preview-processor.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
public final class app/cash/paparazzi/preview/processor/PreviewProcessor : com/google/devtools/ksp/processing/SymbolProcessor {
public fun <init> (Lcom/google/devtools/ksp/processing/SymbolProcessorEnvironment;)V
public fun process (Lcom/google/devtools/ksp/processing/Resolver;)Ljava/util/List;
}

public final class app/cash/paparazzi/preview/processor/PreviewProcessorProvider : com/google/devtools/ksp/processing/SymbolProcessorProvider {
public fun <init> ()V
public fun create (Lcom/google/devtools/ksp/processing/SymbolProcessorEnvironment;)Lapp/cash/paparazzi/preview/processor/PreviewProcessor;
public synthetic fun create (Lcom/google/devtools/ksp/processing/SymbolProcessorEnvironment;)Lcom/google/devtools/ksp/processing/SymbolProcessor;
}

Loading

0 comments on commit 1bca5c9

Please sign in to comment.