Skip to content

Commit

Permalink
Apply convention plugins in modules
Browse files Browse the repository at this point in the history
* Declare explicitly which IDE files to track
* Add common build logic for multiplatform, kotlin, android & jvm
* Fixes #24: Exclude the copyright files from Spotless
  • Loading branch information
etonotieno committed Oct 7, 2023
1 parent b2ece96 commit 1d6afcb
Show file tree
Hide file tree
Showing 42 changed files with 383 additions and 334 deletions.
21 changes: 7 additions & 14 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,19 @@ captures/
output.json

# IntelliJ
.idea/
*.iml
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml
.idea/workspace.xml
.idea/misc.xml
.idea/libraries
.idea/caches
.idea/navEditor.xml
.idea/tasks.xml
.idea/inspectionProfiles
.idea/modules.xml
.idea/compiler.xml
.idea/jarRepositories.xml
.idea/deploymentTargetDropDown.xml
.idea/androidTestResultsUserPreferences.xml
.idea/appInsightsSettings.xml
.idea/artifacts
gradle.xml

!.idea/vcs.xml
!.idea/kotlinc.xml
!.idea/icon.png
!.idea/dictionaries
!.idea/codeStyles

# Keystore files
*.jks
*.keystore
Expand Down
16 changes: 16 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/dictionaries/etonotieno.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 16 additions & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/runConfigurations/detekt.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 16 additions & 1 deletion .idea/runConfigurations/spotlessApply.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 16 additions & 1 deletion .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 2 additions & 12 deletions android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,19 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("gocart.android.application")
id("gocart.kotlin.android")
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.hilt)
}

kotlin {
jvmToolchain(17)
}

android {
compileSdk = 34
namespace = "io.devbits.gocart"

defaultConfig {
applicationId = "io.devbits.gocart"
minSdk = 21
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
manifestPlaceholders["appIconRound"] = "@mipmap/ic_launcher_round"
}
Expand Down Expand Up @@ -107,8 +99,6 @@ dependencies {

androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

detektPlugins(libs.compose.rules.detekt)
}

kapt {
Expand Down
50 changes: 4 additions & 46 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
* limitations under the License.
*/
plugins {
id("gocart.root")

alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
Expand All @@ -22,50 +24,6 @@ plugins {
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.detekt)
alias(libs.plugins.spotless)
}

apply(from = "scripts/git-hooks.gradle")

allprojects {
apply<com.diffplug.gradle.spotless.SpotlessPlugin>()

// Spotless Configuration Issue https://github.com/diffplug/spotless/issues/1380#issuecomment-1459601930
val configureSpotless: com.diffplug.gradle.spotless.SpotlessExtension.() -> Unit = {
kotlin {
target("**/*.kt")
targetExclude("**/build/**/*.kt")
ktlint(libs.versions.ktlint.get()).userData(mapOf("android" to "true"))
licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
trimTrailingWhitespace()
endWithNewline()
}
kotlinGradle {
ktlint(libs.versions.ktlint.get())
target("**/*.kts")
targetExclude("**/build/**/*.kts")
licenseHeaderFile(rootProject.file("spotless/copyright.kts"), "(^(?![\\/ ]\\*).*$)")
}
format("xml") {
target("**/*.xml")
targetExclude("**/build/**/*.xml")
licenseHeaderFile(rootProject.file("spotless/copyright.xml"), "(<[^!?])")
}
}

if (project === rootProject) {
spotless { predeclareDeps() }
extensions.configure<com.diffplug.gradle.spotless.SpotlessExtensionPredeclare>(configureSpotless)
} else {
extensions.configure(configureSpotless)
}

apply<io.gitlab.arturbosch.detekt.DetektPlugin>()

detekt {
config.setFrom("${project.rootDir}/detekt.yml")
parallel = true
buildUponDefaultConfig = true
}
alias(libs.plugins.detekt) apply false
alias(libs.plugins.spotless) apply false
}
13 changes: 2 additions & 11 deletions core/datastore/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,15 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
id("gocart.android.library")
id("gocart.kotlin.android")
alias(libs.plugins.kotlin.kapt)
}

kotlin {
jvmToolchain(17)
}

android {
compileSdk = 34
namespace = "io.devbits.gocart.core.datastore"

defaultConfig {
minSdk = 21
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
Expand All @@ -51,8 +44,6 @@ dependencies {

implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)

detektPlugins(libs.compose.rules.detekt)
}

kapt {
Expand Down
13 changes: 2 additions & 11 deletions core/designsystem/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,15 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
}

kotlin {
jvmToolchain(17)
id("gocart.android.library")
id("gocart.kotlin.android")
}

android {
namespace = "io.devbits.gocart.designsystem"
compileSdk = 34

defaultConfig {
minSdk = 21

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}

Expand Down Expand Up @@ -78,6 +71,4 @@ dependencies {

androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

detektPlugins(libs.compose.rules.detekt)
}
10 changes: 1 addition & 9 deletions core/model/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,5 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.kotlin.jvm)
}

kotlin {
jvmToolchain(17)
}

dependencies {
detektPlugins(libs.compose.rules.detekt)
id("gocart.jvm.library")
}
13 changes: 2 additions & 11 deletions core/network/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,15 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
id("gocart.android.library")
id("gocart.kotlin.android")
alias(libs.plugins.kotlin.kapt)
}

kotlin {
jvmToolchain(17)
}

android {
compileSdk = 34
namespace = "io.devbits.gocart.core.network"

defaultConfig {
minSdk = 21
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
Expand All @@ -51,8 +44,6 @@ dependencies {

implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)

detektPlugins(libs.compose.rules.detekt)
}

kapt {
Expand Down
Loading

0 comments on commit 1d6afcb

Please sign in to comment.