Skip to content

Commit

Permalink
Cleanup API
Browse files Browse the repository at this point in the history
  • Loading branch information
nak5ive authored and geoff-powell committed May 14, 2024
1 parent f1a56ff commit 2fcea78
Show file tree
Hide file tree
Showing 9 changed files with 165 additions and 256 deletions.
9 changes: 9 additions & 0 deletions buildSrc/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
repositories {
mavenCentral()
google()
}

dependencies {
implementation libs.plugin.android
implementation libs.plugin.kotlin
}
9 changes: 9 additions & 0 deletions buildSrc/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
rootProject.name = 'build-support'

dependencyResolutionManagement {
versionCatalogs {
libs {
from(files('../gradle/libs.versions.toml'))
}
}
}
114 changes: 114 additions & 0 deletions gradle/aarAsJar.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import com.android.build.gradle.internal.publishing.AndroidArtifacts
import org.gradle.api.artifacts.transform.TransformParameters
import org.gradle.api.internal.artifacts.transform.UnzipTransform
import org.gradle.work.DisableCachingByDefault
import java.nio.file.Files
import java.util.zip.ZipFile

configurations {
unzip {
attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, ArtifactTypeDefinition.DIRECTORY_TYPE)
}
}

configureAarAsJarForConfiguration("compileOnly")
configureAarAsJarForConfiguration("testImplementation")

dependencies {
registerTransform(UnzipTransform) {
from.attribute(AndroidArtifacts.ARTIFACT_TYPE, ArtifactTypeDefinition.JAR_TYPE)
to.attribute(AndroidArtifacts.ARTIFACT_TYPE, ArtifactTypeDefinition.DIRECTORY_TYPE)
}
registerTransform(IdentityTransform) {
from.attribute(AndroidArtifacts.ARTIFACT_TYPE, "jar")
to.attribute(AndroidArtifacts.ARTIFACT_TYPE, "aarAsJar")
}
registerTransform(ExtractClassesJarTransform) {
from.attribute(AndroidArtifacts.ARTIFACT_TYPE, "aar")
to.attribute(AndroidArtifacts.ARTIFACT_TYPE, "aarAsJar")
}
}

def configureAarAsJarForConfiguration(String configuration) {
def aarAsJar = project.configurations
.create("${configuration}AarAsJar") {
canBeResolved = true
attributes.attribute(
AndroidArtifacts.ARTIFACT_TYPE,
"release"
)
attributes.attribute(
Usage.USAGE_ATTRIBUTE,
project.getObjects().named(Usage, Usage.JAVA_API)
)
}.incoming
.artifactView { viewConfiguration ->
viewConfiguration.attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, "aarAsJar")
}
.files

project.configurations
.getByName(configuration)
.dependencies
.add(project.dependencies.create(aarAsJar))
}

@DisableCachingByDefault
abstract class IdentityTransform implements TransformAction<TransformParameters.None> {
@PathSensitive(PathSensitivity.ABSOLUTE)
@InputArtifact
abstract Provider<FileSystemLocation> getInputArtifact()

@Override
void transform(TransformOutputs transformOutputs) {
def input = getInputArtifact().get().asFile
if (input.isDirectory()) {
transformOutputs.dir(input)
} else if (input.isFile()) {
transformOutputs.file(input)
} else {
throw new IllegalArgumentException(
"File/directory does not exist: ${input.absolutePath}"
)
}
}
}

@DisableCachingByDefault
abstract class ExtractClassesJarTransform implements TransformAction<TransformParameters.None> {
@PathSensitive(PathSensitivity.NAME_ONLY)
@InputArtifact
abstract Provider<FileSystemLocation> getPrimaryInput()

@Override
void transform(TransformOutputs outputs) {
ZipFile zip = null
try {
def file = getPrimaryInput().get().asFile
def aarFilename = file.name.substring(0, file.name.lastIndexOf('.'))
zip = new ZipFile(file)
def entries = zip.entries()
while (entries.hasMoreElements()) {
def item = entries.nextElement()
if (item.isDirectory()) continue

if (item.name == "classes.jar") {
def output = outputs.file(aarFilename + "-" + item.name)
def inputStream = null
try {
inputStream = zip.getInputStream(item)
Files.copy(inputStream, output.toPath())
} finally {
if (inputStream != null) {
inputStream.close()
}
}
}
}
} finally {
if (zip != null) {
zip.close()
}
}
}
}
5 changes: 0 additions & 5 deletions paparazzi-annotations/api/paparazzi-annotations.api
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,6 @@ public final class app/cash/paparazzi/annotations/PaparazziPreviewData$Provider
public final fun withPreviewParameterIndex (I)Lapp/cash/paparazzi/annotations/PaparazziPreviewData$Provider;
}

public final class app/cash/paparazzi/annotations/PaparazziPreviewDefaults {
public static final field DEVICE_ID Ljava/lang/String;
public static final field INSTANCE Lapp/cash/paparazzi/annotations/PaparazziPreviewDefaults;
}

public final class app/cash/paparazzi/annotations/PreviewData {
public fun <init> ()V
public fun <init> (Ljava/lang/Float;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;)V
Expand Down
2 changes: 1 addition & 1 deletion paparazzi-annotations/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'com.vanniktech.maven.publish'
apply from: "../gradle/aarToJarConfiguration.gradle"
apply from: "../gradle/aarAsJar.gradle"

dependencies {
compileOnlyAarAsJar libs.compose.runtime
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package app.cash.paparazzi.annotations

import androidx.compose.runtime.Composable

public sealed interface PaparazziPreviewData {

public data class Default(
val snapshotName: String,
val composable: @Composable () -> Unit
) : PaparazziPreviewData {
override fun toString(): String = snapshotName
}

public data class Provider<T>(
val snapshotName: String,
val composable: @Composable (T) -> Unit
) : PaparazziPreviewData {
override fun toString(): String = snapshotName
}

public data object Empty : PaparazziPreviewData {
override fun toString(): String = "Empty"
}

public data class Error(
val snapshotName: String,
val message: String
) : PaparazziPreviewData {
override fun toString(): String = snapshotName
}
}

This file was deleted.

This file was deleted.

0 comments on commit 2fcea78

Please sign in to comment.