Skip to content

Commit fb588a2

Browse files
authored
Configure Spotless through the convention plugins (#1566)
* Configure Spotless through the convention plugins * Remove SpotlessConventionPlugin
1 parent 5f8c180 commit fb588a2

File tree

22 files changed

+52
-164
lines changed

22 files changed

+52
-164
lines changed

.editorconfig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ root = true
33
# Most of the standard properties are supported
44
max_line_length=100
55

6+
[*.{java,kt,kts}]
7+
ktlint_standard_max-line-length=disabled
68
# don't use wildcard for Java/Kotlin imports
7-
[*.{java,kt}]
89
wildcard_import_limit = 999
910
ij_kotlin_name_count_to_use_star_import = 999
10-
ij_kotlin_name_count_to_use_star_import_for_members = 999
11+
ij_kotlin_name_count_to_use_star_import_for_members = 999

benchmark/build.gradle.kts

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,16 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
import io.getstream.video.configureFlavors
17-
18-
@Suppress("DSL_SCOPE_VIOLATION")
1916
plugins {
20-
id(libs.plugins.android.test.get().pluginId)
21-
id(libs.plugins.kotlin.android.get().pluginId)
22-
id(libs.plugins.baseline.profile.get().pluginId)
23-
id("io.getstream.spotless")
17+
alias(libs.plugins.stream.android.test)
18+
alias(libs.plugins.baseline.profile)
19+
id("io.getstream.video.android.demoflavor")
2420
}
2521

2622
android {
2723
namespace = "io.getstream.video.android.benchmark"
2824
compileSdk = libs.versions.compileSdk.get().toInt()
2925

30-
compileOptions {
31-
sourceCompatibility = JavaVersion.VERSION_11
32-
targetCompatibility = JavaVersion.VERSION_11
33-
}
34-
35-
kotlinOptions {
36-
jvmTarget = "11"
37-
}
38-
3926
defaultConfig {
4027
minSdk = libs.versions.minSdk.get().toInt()
4128
targetSdk = libs.versions.targetSdk.get().toInt()
@@ -62,17 +49,6 @@ android {
6249
}
6350
}
6451

65-
// Use the same flavor dimensions as the application to allow generating Baseline Profiles on prod,
66-
// which is more close to what will be shipped to users (no fake data), but has ability to run the
67-
// benchmarks on demo, so we benchmark on stable data.
68-
configureFlavors(this) { flavor ->
69-
buildConfigField(
70-
"String",
71-
"APP_FLAVOR_SUFFIX",
72-
"\"${flavor.applicationIdSuffix ?: ""}\""
73-
)
74-
}
75-
7652
targetProjectPath = ":demo-app"
7753

7854
testOptions.managedDevices.devices {

build-logic/convention/build.gradle.kts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ java {
99
targetCompatibility = JavaVersion.VERSION_17
1010
}
1111

12-
@Suppress("DSL_SCOPE_VIOLATION")
1312
dependencies {
1413
compileOnly(libs.android.gradlePlugin)
1514
compileOnly(libs.kotlin.gradlePlugin)
@@ -35,9 +34,9 @@ gradlePlugin {
3534
id = "io.getstream.video.android.library"
3635
implementationClass = "AndroidLibraryConventionPlugin"
3736
}
38-
register("spotless") {
39-
id = "io.getstream.spotless"
40-
implementationClass = "SpotlessConventionPlugin"
37+
register("demoFlavorConvention") {
38+
id = "io.getstream.video.android.demoflavor"
39+
implementationClass = "DemoFlavorConventionPlugin"
4140
}
4241
}
4342
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import com.android.build.api.dsl.ApplicationExtension
2+
import com.android.build.api.dsl.TestExtension
3+
import io.getstream.video.configureFlavors
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.gradle.kotlin.dsl.configure
7+
8+
class DemoFlavorConventionPlugin : Plugin<Project> {
9+
override fun apply(target: Project) {
10+
with(target) {
11+
pluginManager.withPlugin("com.android.application") {
12+
extensions.configure<ApplicationExtension>(::configureFlavors)
13+
}
14+
pluginManager.withPlugin("com.android.test") {
15+
extensions.configure<TestExtension>(::configureFlavors)
16+
}
17+
}
18+
}
19+
}

build-logic/convention/src/main/kotlin/SpotlessConventionPlugin.kt

Lines changed: 0 additions & 55 deletions
This file was deleted.

build-logic/convention/src/main/kotlin/io/getstream/video/DemoFlavor.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,29 @@ enum class VideoDemoFlavor(val dimension: FlavorDimension, val applicationIdSuff
2020
production(FlavorDimension.contentType),
2121
}
2222

23-
fun configureFlavors(
23+
internal fun configureFlavors(
2424
commonExtension: CommonExtension<*, *, *, *, *, *>,
25-
flavorConfigurationBlock: ProductFlavor.(flavor: VideoDemoFlavor) -> Unit = {}
2625
) {
2726
commonExtension.apply {
2827
flavorDimensions += "environment"
2928
productFlavors {
30-
VideoDemoFlavor.values().forEach {
31-
create(it.name) {
29+
VideoDemoFlavor.values().forEach { flavor ->
30+
create(flavor.name) {
3231
dimension = "environment"
33-
flavorConfigurationBlock(this, it)
32+
buildConfigField(
33+
"String",
34+
"APP_FLAVOR_SUFFIX",
35+
"\"${flavor.applicationIdSuffix.orEmpty()}\"",
36+
)
37+
3438
if (this@apply is ApplicationExtension && this is ApplicationProductFlavor) {
35-
if (it.applicationIdSuffix != null) {
36-
applicationIdSuffix = it.applicationIdSuffix
39+
if (flavor.applicationIdSuffix != null) {
40+
applicationIdSuffix = flavor.applicationIdSuffix
3741
}
3842
}
3943
proguardFiles("benchmark-rules.pro")
4044
}
4145
}
4246
}
4347
}
44-
}
48+
}

build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ buildscript {
2424

2525
@Suppress("DSL_SCOPE_VIOLATION")
2626
plugins {
27+
alias(libs.plugins.stream.project)
2728
alias(libs.plugins.stream.android.application) apply false
2829
alias(libs.plugins.stream.android.library) apply false
30+
alias(libs.plugins.stream.android.test) apply false
2931
alias(libs.plugins.android.application) apply false
3032
alias(libs.plugins.kotlin.android) apply false
3133
// alias(libs.plugins.compose.compiler) apply false -> Enable with Kotlin 2.0+
@@ -46,6 +48,12 @@ plugins {
4648
alias(libs.plugins.kover) apply false
4749
}
4850

51+
streamProject {
52+
spotless {
53+
excludePatterns = setOf("**/generated/**")
54+
}
55+
}
56+
4957
subprojects {
5058
if (name.startsWith("stream-video-android")) {
5159
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {

demo-app/build.gradle.kts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@ import com.github.triplet.gradle.androidpublisher.ResolutionStrategy
2121
import io.getstream.video.FlavorDimension
2222
import io.getstream.video.VideoDemoFlavor
2323
import io.getstream.video.android.Configuration
24-
import io.getstream.video.configureFlavors
2524
import java.io.FileInputStream
2625
import java.util.Properties
2726

28-
@Suppress("DSL_SCOPE_VIOLATION")
2927
plugins {
3028
id("io.getstream.video.android.application.compose")
31-
id("io.getstream.spotless")
29+
id("io.getstream.video.android.demoflavor")
3230
id("com.google.gms.google-services")
3331
id(libs.plugins.firebase.crashlytics.get().pluginId)
3432
id(libs.plugins.kotlin.serialization.get().pluginId)
@@ -93,8 +91,6 @@ android {
9391
}
9492
}
9593

96-
configureFlavors(this)
97-
9894
buildTypes {
9995
getByName("debug") {
10096
versionNameSuffix = "-DEBUG"

gradle/libs.versions.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ cameraCamera2 = "1.3.4"
1010
kover = "0.8.3"
1111
sonarqube = "6.0.1.5171"
1212
spotless = "6.21.0"
13-
streamConventions = "0.2.0"
13+
streamConventions = "0.3.0"
1414
mavenPublish = "0.34.0"
1515
kotlin = "1.9.25"
1616
ksp = "1.9.25-1.0.20"
@@ -247,8 +247,10 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "
247247
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover"}
248248
sonarqube = { id = "org.sonarqube", version.ref = "sonarqube"}
249249
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
250+
stream-project = { id = "io.getstream.project", version.ref = "streamConventions" }
250251
stream-android-application = { id = "io.getstream.android.application", version.ref = "streamConventions" }
251252
stream-android-library = { id = "io.getstream.android.library", version.ref = "streamConventions" }
253+
stream-android-test = { id = "io.getstream.android.test", version.ref = "streamConventions" }
252254
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish"}
253255
dokka = { id = "org.jetbrains.dokka", version.ref = "kotlinDokka" }
254256
google-gms = { id = "com.google.gms.google-services", version.ref = "googleService" }

spotless/copyright.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)