Skip to content

Commit 9fac531

Browse files
committed
chore(pluto): moved common android{} code to a plugin
1 parent 60a0493 commit 9fac531

File tree

24 files changed

+176
-577
lines changed

24 files changed

+176
-577
lines changed

build.gradle.kts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import io.gitlab.arturbosch.detekt.Detekt
55
// Top-level build file where you can add configuration options common to all sub-projects/modules.
66
plugins {
77
alias(libs.plugins.dokka)
8-
alias(libs.plugins.android.library) apply false
9-
alias(libs.plugins.android.application) apply false
10-
alias(libs.plugins.kotlin.android) apply false
11-
alias(libs.plugins.kotlin.parcelize) apply false
8+
// id("com.android.library")
9+
id("com.android.application")
10+
id("org.jetbrains.kotlin.android")
11+
id("org.jetbrains.kotlin.plugin.parcelize")
1212
alias(libs.plugins.ksp) apply false
1313
alias(libs.plugins.detekt) apply false
1414
alias(libs.plugins.ktlint) apply false
@@ -37,10 +37,10 @@ val installGitHook by tasks.registering(Copy::class) {
3737
fileMode = "0777".toInt(8)
3838
}
3939

40-
val clean by tasks.registering(Delete::class) {
41-
dependsOn(installGitHook)
42-
delete(rootProject.buildDir)
43-
}
40+
//val clean by tasks.registering(Delete::class) {
41+
// dependsOn(installGitHook)
42+
// delete(rootProject.buildDir)
43+
//}
4444

4545
tasks.withType<Detekt>().configureEach {
4646
exclude(".*/resources/.*,.*/build/.*")

buildSrc/build.gradle.kts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
13
plugins {
24
`kotlin-dsl`
35
}
46

57
repositories {
8+
google()
69
mavenCentral()
10+
}
11+
12+
dependencies{
13+
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20")
14+
implementation("com.android.tools.build:gradle:8.6.0")
15+
}
16+
17+
val compileKotlin:KotlinCompile by tasks
18+
compileKotlin.kotlinOptions {
19+
jvmTarget = "1.8"
720
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import org.gradle.api.Plugin
2+
import org.gradle.api.Project
3+
import com.android.build.gradle.LibraryExtension
4+
import org.gradle.api.JavaVersion
5+
6+
class PlutoGradlePlugin : Plugin<Project> {
7+
override fun apply(project: Project) {
8+
applyPlugins(project)
9+
setProjectConfig(project)
10+
}
11+
12+
private fun applyPlugins(target: Project) {
13+
target.apply {
14+
plugin("android-library")
15+
plugin("kotlin-android")
16+
}
17+
}
18+
19+
private fun setProjectConfig(target: Project) {
20+
val version = Versioning.loadVersioningData()
21+
val verCode = version["code"] as Int
22+
val verPublish = version["publish"] as String
23+
val verGitSHA = version["gitSha"] as String
24+
target.android().apply {
25+
compileSdk = ProjectConfig.compileSdk
26+
buildToolsVersion = ProjectConfig.buildTools
27+
buildFeatures {
28+
buildConfig = true
29+
viewBinding = true
30+
}
31+
defaultConfig {
32+
minSdk = ProjectConfig.minSdk
33+
buildConfigField("String", "VERSION_NAME", "\"$verPublish\"")
34+
buildConfigField("long", "VERSION_CODE", "$verCode")
35+
buildConfigField("String", "GIT_SHA", "\"$verGitSHA\"")
36+
}
37+
38+
buildTypes {
39+
getByName("release") {
40+
// isDebuggable = true
41+
isMinifyEnabled = false
42+
isShrinkResources = false
43+
}
44+
}
45+
46+
compileOptions {
47+
sourceCompatibility = JavaVersion.toVersion(ProjectConfig.java)
48+
targetCompatibility = JavaVersion.toVersion(ProjectConfig.java)
49+
}
50+
lint {
51+
abortOnError = false
52+
targetSdk = ProjectConfig.targetSdk
53+
}
54+
}
55+
}
56+
57+
private fun Project.android(): LibraryExtension {
58+
return extensions.getByType(LibraryExtension::class.java)
59+
}
60+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
object ProjectConfig {
2+
const val testCore = "1.6.1"
3+
const val coreTesting = "2.2.0"
4+
const val java = "1.8"
5+
const val minSdk = 21
6+
const val mockitoCore = "5.10.0"
7+
const val robolectric = "4.11.1"
8+
const val runner = "1.6.2"
9+
const val targetSdk = 32
10+
const val compileSdk = 34
11+
const val buildTools = "34.0.0"
12+
const val agp = "8.6.0"
13+
const val androidXCore = "1.6.0"
14+
const val androidXLifecycle = "2.8.7"
15+
const val detekt = "1.19.0"
16+
const val kotlin = "1.9.22"
17+
const val ktlintPlugin = "11.1.0"
18+
const val ktor = "2.3.2"
19+
const val ksp = "1.9.22-1.0.16"
20+
const val moshi = "1.15.1"
21+
const val navigation = "2.8.6"
22+
const val okhttp = "4.12.0"
23+
const val retrofit = "2.9.0"
24+
const val room = "2.5.1"
25+
const val mavenPublish = "0.28.0"
26+
}
27+

pluto-plugins/base/lib/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
}
88

pluto-plugins/bundle/lib-no-op/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
}
88

pluto-plugins/bundle/lib/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
}
88

pluto-plugins/plugins/datastore/lib-no-op/build.gradle.kts

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,18 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
}
88

99
val version = Versioning.loadVersioningData()
10-
val verCode = version["code"] as Int
1110
val verPublish = version["publish"] as String
12-
val verGitSHA = version["gitSha"] as String
1311

12+
13+
apply<PlutoGradlePlugin>()
1414
android {
1515
namespace = "com.pluto.plugins.datastore.pref"
16-
17-
compileSdk = libs.versions.compileSdk.get().toInt()
18-
buildToolsVersion = libs.versions.buildTools.get()
19-
20-
buildFeatures {
21-
viewBinding = true
22-
}
23-
24-
defaultConfig {
25-
minSdk = libs.versions.minSdk.get().toInt()
26-
}
27-
28-
buildTypes {
29-
getByName("release") {
30-
// isDebuggable = true
31-
isMinifyEnabled = false
32-
isShrinkResources = false
33-
}
34-
}
35-
36-
compileOptions {
37-
sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get())
38-
targetCompatibility = JavaVersion.toVersion(libs.versions.java.get())
39-
}
40-
41-
kotlinOptions {
42-
jvmTarget = libs.versions.java.get()
43-
}
44-
45-
lint {
46-
abortOnError = false
47-
targetSdk = libs.versions.targetSdk.get().toInt()
48-
}
4916
}
5017

5118
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"

pluto-plugins/plugins/datastore/lib/build.gradle.kts

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,20 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
alias(libs.plugins.ksp)
88
}
99

1010
val version = Versioning.loadVersioningData()
11-
val verCode = version["code"] as Int
1211
val verPublish = version["publish"] as String
13-
val verGitSHA = version["gitSha"] as String
1412

13+
14+
apply<PlutoGradlePlugin>()
1515
android {
1616
namespace = "com.pluto.plugins.datastore.pref"
1717
resourcePrefix = "pluto_dts___"
18-
19-
compileSdk = libs.versions.compileSdk.get().toInt()
20-
buildToolsVersion = libs.versions.buildTools.get()
21-
22-
buildFeatures {
23-
buildConfig = true
24-
viewBinding = true
25-
}
26-
27-
defaultConfig {
28-
minSdk = libs.versions.minSdk.get().toInt()
29-
30-
buildConfigField("String", "VERSION_NAME", "\"$verPublish\"")
31-
buildConfigField("long", "VERSION_CODE", "$verCode")
32-
buildConfigField("String", "GIT_SHA", "\"$verGitSHA\"")
33-
}
34-
35-
buildTypes {
36-
getByName("release") {
37-
// isDebuggable = true
38-
isMinifyEnabled = false
39-
isShrinkResources = false
40-
}
41-
}
42-
43-
compileOptions {
44-
sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get())
45-
targetCompatibility = JavaVersion.toVersion(libs.versions.java.get())
46-
}
47-
48-
kotlinOptions {
49-
jvmTarget = libs.versions.java.get()
50-
}
51-
52-
lint {
53-
abortOnError = false
54-
targetSdk = libs.versions.targetSdk.get().toInt()
55-
}
5618
}
5719

5820
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"

pluto-plugins/plugins/exceptions/lib-no-op/build.gradle.kts

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,17 @@
11
import com.vanniktech.maven.publish.SonatypeHost
22

33
plugins {
4-
alias(libs.plugins.android.library)
5-
alias(libs.plugins.kotlin.android)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
66
alias(libs.plugins.maven.publish)
77
}
88

99
val version = Versioning.loadVersioningData()
10-
val verCode = version["code"] as Int
1110
val verPublish = version["publish"] as String
12-
val verGitSHA = version["gitSha"] as String
1311

12+
apply<PlutoGradlePlugin>()
1413
android {
1514
namespace = "com.pluto.plugins.exceptions"
16-
17-
compileSdk = libs.versions.compileSdk.get().toInt()
18-
buildToolsVersion = libs.versions.buildTools.get()
19-
20-
buildFeatures {
21-
viewBinding = true
22-
}
23-
24-
defaultConfig {
25-
minSdk = libs.versions.minSdk.get().toInt()
26-
}
27-
28-
buildTypes {
29-
getByName("release") {
30-
// isDebuggable = true
31-
isMinifyEnabled = false
32-
isShrinkResources = false
33-
}
34-
}
35-
36-
compileOptions {
37-
sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get())
38-
targetCompatibility = JavaVersion.toVersion(libs.versions.java.get())
39-
}
40-
41-
kotlinOptions {
42-
jvmTarget = libs.versions.java.get()
43-
}
44-
45-
lint {
46-
abortOnError = false
47-
targetSdk = libs.versions.targetSdk.get().toInt()
48-
}
4915
}
5016

5117
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"

0 commit comments

Comments
 (0)