Skip to content
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
52 changes: 0 additions & 52 deletions build.gradle

This file was deleted.

24 changes: 24 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.maven.publish) apply false
alias(libs.plugins.dokka) apply false
alias(libs.plugins.paparazzi) apply false
alias(libs.plugins.roborazzi) apply false
}


tasks.register<Delete>("clean") {
delete(rootProject.buildDir)
}

// Used on CI to prevent publishing of non-snapshot versions.
tasks.register("throwIfVersionIsNotSnapshot") {
val libraryVersion = project.findProperty("VERSION_NAME") as String
if (!libraryVersion.endsWith("SNAPSHOT")) {
throw IllegalStateException("Project isn't using a snapshot version = $libraryVersion")
}
}
79 changes: 0 additions & 79 deletions cascade-compose/build.gradle

This file was deleted.

90 changes: 90 additions & 0 deletions cascade-compose/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import java.time.Duration

plugins {
alias(libs.plugins.dropshots)
alias(libs.plugins.emulator)
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.paparazzi)
alias(libs.plugins.roborazzi)
alias(libs.plugins.maven.publish)
}

android {
resourcePrefix = "cascade_"
namespace = "me.saket.cascade"

compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildFeatures {
compose = true
buildConfig = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
}
kotlinOptions {
jvmTarget = "1.8"
}
lint {
abortOnError = true
}
testOptions {
animationsDisabled = true
unitTests {
isIncludeAndroidResources = true // Required by Robolectric.
}
}
}

emulatorwtf {
devices.set(
listOf(
mapOf(
"model" to "Pixel7",
"version" to 31,
"atd" to false
)
)
) // ATD emulators don't have any soft keyboard.
directoriesToPull.set(listOf("/sdcard/Download/"))
numFlakyTestAttempts.set(2) // 3 runs in total.
fileCacheTtl.set(Duration.ofDays(30))
timeout.set(Duration.ofMinutes(15)) // Note to self: this is per shard and not per test.
printOutput.set(true) // Print report URL even for successful test runs.
}

dependencies {
implementation(libs.activity.compose)
implementation(libs.compose.ui)
implementation(libs.compose.ui.tooling)
implementation(libs.compose.foundation)
implementation(libs.compose.material3)

testImplementation(libs.junit)
testImplementation(libs.testparaminjector)
testImplementation(libs.truth)

testImplementation(libs.compose.ui.test)
testImplementation(libs.robolectric)
testImplementation(libs.roborazzi)
testImplementation(libs.roborazzi.junit)
testImplementation(libs.compose.icons.extended)
testImplementation(libs.hamcrest)

debugImplementation(libs.compose.ui.manifest)

debugImplementation(libs.appcompat)

androidTestImplementation(libs.test.core)
androidTestImplementation(libs.test.rules)
androidTestImplementation(libs.test.junit.ext)
androidTestImplementation(libs.compose.ui.test)
androidTestImplementation(libs.testparaminjector)
androidTestImplementation(libs.compose.icons.extended)
}
25 changes: 0 additions & 25 deletions cascade/build.gradle

This file was deleted.

30 changes: 30 additions & 0 deletions cascade/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.maven.publish)
}

android {
resourcePrefix = "cascade_"
namespace = "me.saket.cascade"

compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
minSdk = 21
}

kotlinOptions {
jvmTarget = "1.8"
}

lint {
abortOnError = true
}
}

dependencies {
implementation(libs.appcompat)
implementation(libs.recyclerview)
implementation(libs.ktx)
}
79 changes: 79 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
[versions]
android-gradle = "8.1.2"
minSdk = "23"
compileSdk = "34"
kotlin = "1.9.10"
composeUi = "1.5.2"
composeCompiler = "1.5.3"
composeUiMaterial3 = "1.1.2"
activityCompose = "1.7.2"
appCompat = "1.6.1"
testParamInjector = "1.12"
recyclerView = "1.3.1"
ktx = "1.12.0"
paparazzi = "1.3.1"
roborazzi = "1.7.0-alpha-4"
material = "1.9.0"
taptargetview = "1.13.3"
introshowcaseview = "1.0.7"
junit = "4.13.2"
truth = "1.1.5"
hamcrest = "1.3"
robolectric = "4.10.3"
testCore = "1.5.0"
testRules = "1.5.0"
testJunitExt = "1.1.5"
dropshots = "0.4.1"
emulator-gradle = "0.15.1"
maven-publish = "0.25.3"
dokka = "1.9.0"

[libraries]
# Compose & AndroidX
activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
compose-ui = { module = "androidx.compose.ui:ui", version.ref = "composeUi" }
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "composeUi" }
compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "composeUi" }
compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "composeUiMaterial3" }
compose-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "composeUi" }

# AndroidX & Core
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appCompat" }
ktx = { module = "androidx.core:core-ktx", version.ref = "ktx" }
recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerView" }

# Material & UI
material = { module = "com.google.android.material:material", version.ref = "material" }
taptargetview = { module = "com.getkeepsafe.taptargetview:taptargetview", version.ref = "taptargetview" }
introshowcaseview = { module = "com.canopas.intro-showcase-view:introshowcaseview", version.ref = "introshowcaseview" }

# Testing
junit = { module = "junit:junit", version.ref = "junit" }
truth = { module = "com.google.truth:truth", version.ref = "truth" }
hamcrest = { module = "org.hamcrest:hamcrest-core", version.ref = "hamcrest" }
testparaminjector = { module = "com.google.testparameterinjector:test-parameter-injector", version.ref = "testParamInjector" }
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
test-core = { module = "androidx.test:core-ktx", version.ref = "testCore" }
test-rules = { module = "androidx.test:rules", version.ref = "testRules" }
test-junit-ext = { module = "androidx.test.ext:junit-ktx", version.ref = "testJunitExt" }

# Compose Test
compose-ui-test = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "composeUi" }
compose-ui-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "composeUi" }

# Roborazzi / Paparazzi
paparazzi = { module = "app.cash.paparazzi:paparazzi", version.ref = "paparazzi" }
roborazzi = { module = "io.github.takahirom.roborazzi:roborazzi", version.ref = "roborazzi" }
roborazzi-junit = { module = "io.github.takahirom.roborazzi:roborazzi-junit-rule", version.ref = "roborazzi" }


[plugins]
android-application = { id = "com.android.application", version.ref = "android-gradle" }
android-library = { id = "com.android.library", version.ref = "android-gradle" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
paparazzi = { id = "app.cash.paparazzi", version.ref = "paparazzi" }
roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }
dropshots = { id = "com.dropbox.dropshots", version.ref = "dropshots" }
emulator = { id = "wtf.emulator.gradle", version.ref = "emulator-gradle" }
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" }
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
Loading