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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ app/.idea/
.cxx
local.properties
/buildSrc/build/
.kotlin

85 changes: 0 additions & 85 deletions app/build.gradle.kts

This file was deleted.

This file was deleted.

31 changes: 0 additions & 31 deletions app/src/test/java/pro/jayeshseth/madifiers/ExampleUnitTest.kt

This file was deleted.

60 changes: 51 additions & 9 deletions build-logic/convention/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,37 +1,79 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
`kotlin-dsl`
}

group = "pro.jayeshseth.madifiers.buildlogic"

java {
sourceCompatibility = JavaVersion.VERSION_19
targetCompatibility = JavaVersion.VERSION_19
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_17
}
}

dependencies {
compileOnly(libs.android.gradlePlugin)
compileOnly(libs.kotlin.gradlePlugin)
compileOnly(libs.spotless.gradlePlugin)
compileOnly(libs.ksp.gradlePlugin)
compileOnly(libs.android.tools.common)
compileOnly(libs.compose.gradlePlugin)
}

gradlePlugin {
plugins {
/* Spotless */
register("spotless") {
id = "madifiers.spotless"
implementationClass = "SpotlessConventionPlugin"
}
register("androidLibraryCompose") {
id = "madifiers.library.compose"
implementationClass = "AndroidLibraryComposeConventionPlugin"

/* Base Internal Plugins */
register("androidApplication") {
id = "android.application"
implementationClass = "AndroidApplicationConventionPlugin"
}

register("androidApplicationCompose") {
id = "madifiers.application.compose"
id = "android.application.compose"
implementationClass = "AndroidApplicationComposeConventionPlugin"
}
register("madifiersLibrary") {
id = "madifiers.library"
implementationClass = "MadifiersLibraryConventionPlugin"

register("androidLibraryCompose") {
id = "android.library.compose"
implementationClass = "AndroidLibraryComposeConventionPlugin"
}

register("kmpLibrary") {
id = "kmp.library"
implementationClass = "KmpLibraryConventionPlugin"
}

register("cmpLibrary") {
id = "cmp.library"
implementationClass = "CmpLibraryConventionPlugin"
}

register("cmpApplication") {
id = "cmp.application"
implementationClass = "CmpApplicationConventionPlugin"
}

/* Shared Module/Library Plugins */
register("madifiersAndroidLibrary") {
id = "madifiers.android.library"
implementationClass = "MadifiersAndroidLibraryConventionPlugin"
}

register("madifiersCmpLibrary") {
id = "madifiers.cmp.library"
implementationClass = "MadifiersCmpLibraryConventionPlugin"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ class AndroidApplicationComposeConventionPlugin: Plugin<Project> {
override fun apply(target: Project) {
with(target) {
pluginManager.apply {
apply("com.android.application")
apply("org.jetbrains.kotlin.android")
apply("android.application")
apply("madifiers.spotless")
apply("org.jetbrains.kotlin.plugin.compose")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import com.android.build.api.dsl.ApplicationExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import pro.jayeshseth.madifiers.convention.configureKotlinAndroid
import pro.jayeshseth.madifiers.convention.libs

class AndroidApplicationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.application")
// required when only want to use android as platform
// apply("org.jetbrains.kotlin.android")
}

extensions.configure<ApplicationExtension>() {
namespace = libs.findVersion("namespace-androidApp").get().toString()

defaultConfig {
applicationId = libs.findVersion("applicationId").get().toString()
targetSdk = libs.findVersion("target-sdk").get().toString().toInt()
versionCode = libs.findVersion("version-code").get().toString().toInt()
versionName = libs.findVersion("version-name").get().toString()
}

packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
}
}
configureKotlinAndroid(this)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import com.android.build.gradle.LibraryExtension
import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import pro.jayeshseth.madifiers.convention.configureAndroidCompose
import pro.jayeshseth.madifiers.convention.configureKotlinAndroid
import pro.jayeshseth.madifiers.convention.kotlinOptions

class AndroidLibraryComposeConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
Expand All @@ -17,9 +16,9 @@ class AndroidLibraryComposeConventionPlugin : Plugin<Project> {
configureAndroidCompose(this)
configureKotlinAndroid(this)

kotlinOptions {
freeCompilerArgs = freeCompilerArgs
}
// kotlinOptions {
// freeCompilerArgs = freeCompilerArgs
// }
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import pro.jayeshseth.madifiers.convention.applyHierarchyTemplate
import pro.jayeshseth.madifiers.convention.configureAndroidTarget
import pro.jayeshseth.madifiers.convention.configureDesktopTarget
import pro.jayeshseth.madifiers.convention.configureIosTargets
import pro.jayeshseth.madifiers.convention.configureWebTarget
import pro.jayeshseth.madifiers.convention.debugImplementation
import pro.jayeshseth.madifiers.convention.libs

class CmpApplicationConventionPlugin : Plugin<Project> {

override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("android.application.compose")
apply("org.jetbrains.kotlin.multiplatform")
apply("org.jetbrains.compose")
apply("org.jetbrains.kotlin.plugin.compose")
apply("org.jetbrains.kotlin.plugin.serialization")
apply("org.jetbrains.compose.hot-reload")
}

configureAndroidTarget()
configureIosTargets()
configureDesktopTarget()
configureWebTarget()

extensions.configure<KotlinMultiplatformExtension> {
applyHierarchyTemplate()
}

dependencies {
debugImplementation(libs.findLibrary("compose-ui-tooling").get())
}
}
}
}
Loading