Skip to content
This repository was archived by the owner on Jul 2, 2024. It is now read-only.
Merged
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
13 changes: 9 additions & 4 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,22 @@ updates:
interval: "daily"
time: "21:00"
labels: [ "github_actions" ]

- package-ecosystem: gradle
directory: "/"
schedule:
interval: daily
time: "21:00"
labels: [ "dependencies" ]
registries: "*"
ignore:
- dependency-name: "org.jetbrains.kotlin:*"
- dependency-name: "com.google.devtools.ksp:*"
- dependency-name: "androidx.compose.compiler:*"
groups:
kotlin-ksp:
patterns:
- "org.jetbrains.kotlin:*"
- "org.jetbrains.kotlin.jvm"
- "com.google.devtools.ksp"
- "com.google.devtools.ksp.gradle.plugin"

registries:
maven-google:
type: "maven-repository"
Expand Down
11 changes: 7 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# Gradle files
# Gradle
.gradle/
build/

# Local configuration file (sdk path, etc)
# Kotlin
.kotlin

# Local configuration
local.properties
signing.properties

# Android Studio generated files and folders
# Android Studio
captures/
release/
.externalNativeBuild/
Expand All @@ -16,7 +19,7 @@ release/
*.iml
.idea/

# Keystore files
# Keystore
*.jks
*.keystore

Expand Down
8 changes: 4 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import com.android.build.gradle.internal.api.ApkVariantOutputImpl
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
alias(libs.plugins.pro.application)
alias(libs.plugins.pro.compose)
alias(libs.plugins.pro.hilt)
alias(libs.plugins.pro.room)
alias(libs.plugins.self.application)
alias(libs.plugins.self.compose)
alias(libs.plugins.self.hilt)
alias(libs.plugins.self.room)
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.ksp)
alias(libs.plugins.protobuf)
Expand Down
23 changes: 12 additions & 11 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,35 @@ plugins {

dependencies {
compileOnly(libs.android.gradle)
compileOnly(libs.compose.gradle)
compileOnly(libs.kotlin.gradle)
compileOnly(libs.ksp.gradle)
}

gradlePlugin {
plugins {
register("proApplication") {
id = "pro.application"
register("self.application") {
id = "self.application"
implementationClass = "ApplicationConventionPlugin"
}

register("proLibrary") {
id = "pro.library"
register("self.library") {
id = "self.library"
implementationClass = "LibraryConventionPlugin"
}

register("proCompose") {
id = "pro.compose"
register("self.compose") {
id = "self.compose"
implementationClass = "ComposeConventionPlugin"
}

register("proHilt") {
id = "pro.hilt"
register("self.hilt") {
id = "self.hilt"
implementationClass = "HiltConventionPlugin"
}

register("proRoom") {
id = "pro.room"
register("self.room") {
id = "self.room"
implementationClass = "RoomConventionPlugin"
}
}
Expand Down
56 changes: 25 additions & 31 deletions build-logic/src/main/kotlin/ApplicationConventionPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,49 +4,43 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.jvm.toolchain.JavaLanguageVersion
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension

class ApplicationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.application")
apply("org.jetbrains.kotlin.android")
}
override fun apply(target: Project) = with(target) {
apply(plugin = "com.android.application")
apply(plugin = "org.jetbrains.kotlin.android")

extensions.configure<ApplicationExtension> {
compileSdk = 34
buildToolsVersion = "34.0.0"
extensions.configure<ApplicationExtension> {
compileSdk = 34
buildToolsVersion = "34.0.0"

defaultConfig {
minSdk = 26
targetSdk = compileSdk
}
defaultConfig {
minSdk = 29
targetSdk = compileSdk
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
}

extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}

extensions.configure<KotlinAndroidProjectExtension> {
jvmToolchain(21)
extensions.configure<KotlinAndroidProjectExtension> {
jvmToolchain(21)

sourceSets.all {
languageSettings {
optIn("androidx.compose.material3.ExperimentalMaterial3Api")
optIn("androidx.compose.foundation.ExperimentalFoundationApi")
optIn("androidx.compose.foundation.layout.ExperimentalLayoutApi")
optIn("kotlin.ExperimentalStdlibApi")
optIn("kotlinx.coroutines.FlowPreview")
}
sourceSets.all {
languageSettings {
optIn("kotlin.ExperimentalStdlibApi")
optIn("kotlinx.coroutines.FlowPreview")
}
}
}
Expand Down
44 changes: 25 additions & 19 deletions build-logic/src/main/kotlin/ComposeConventionPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,40 @@ import com.android.build.api.dsl.ApplicationExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension

class ComposeConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
override fun apply(target: Project) = with(target) {
apply(plugin = "com.android.application")
apply(plugin = "org.jetbrains.kotlin.android")
apply(plugin = "org.jetbrains.kotlin.plugin.compose")

pluginManager.apply("com.android.application")

extensions.configure<ApplicationExtension> {
buildFeatures {
compose = true
}

composeOptions {
kotlinCompilerExtensionVersion =
libs.findVersion("androidxComposeCompiler").get().toString()
}
extensions.configure<ApplicationExtension> {
buildFeatures {
compose = true
}
}

dependencies {
"implementation"(libs.findLibrary("androidx.compose.material3").get())
"implementation"(libs.findLibrary("androidx.compose.ui").get())
"implementation"(libs.findLibrary("androidx.compose.ui.tooling.preview").get())
"debugImplementation"(libs.findLibrary("androidx.compose.ui.tooling").get())
extensions.configure<KotlinAndroidProjectExtension> {
sourceSets.all {
languageSettings {
optIn("androidx.compose.material3.ExperimentalMaterial3Api")
optIn("androidx.compose.foundation.ExperimentalFoundationApi")
optIn("androidx.compose.foundation.layout.ExperimentalLayoutApi")
}
}
}

val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
dependencies {
"implementation"(libs.findLibrary("androidx.compose.material3").get())
"implementation"(libs.findLibrary("androidx.compose.ui").get())
"implementation"(libs.findLibrary("androidx.compose.ui.tooling.preview").get())
"debugImplementation"(libs.findLibrary("androidx.compose.ui.tooling").get())
}
}
}
20 changes: 8 additions & 12 deletions build-logic/src/main/kotlin/HiltConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType

class HiltConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
override fun apply(target: Project) = with(target) {
apply(plugin = "dagger.hilt.android.plugin")
apply(plugin = "com.google.devtools.ksp")

with(pluginManager) {
apply("dagger.hilt.android.plugin")
apply("com.google.devtools.ksp")
}

dependencies {
"implementation"(libs.findLibrary("hilt.android").get())
"ksp"(libs.findLibrary("hilt.compiler").get())
}
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
dependencies {
"implementation"(libs.findLibrary("hilt.android").get())
"ksp"(libs.findLibrary("hilt.compiler").get())
}
}
}
43 changes: 20 additions & 23 deletions build-logic/src/main/kotlin/LibraryConventionPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,37 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.jvm.toolchain.JavaLanguageVersion
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension

class LibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.library")
apply("org.jetbrains.kotlin.android")
}
override fun apply(target: Project) = with(target) {
apply(plugin = "com.android.library")
apply(plugin = "org.jetbrains.kotlin.android")

extensions.configure<LibraryExtension> {
compileSdk = 34
buildToolsVersion = "34.0.0"

defaultConfig {
minSdk = 26
}
extensions.configure<LibraryExtension> {
compileSdk = 34
buildToolsVersion = "34.0.0"

compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
defaultConfig {
minSdk = 29
}

extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
}

extensions.configure<KotlinAndroidProjectExtension> {
jvmToolchain(21)
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}

extensions.configure<KotlinAndroidProjectExtension> {
jvmToolchain(21)
}
}
}
7 changes: 2 additions & 5 deletions build-logic/src/main/kotlin/ProjectExt.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import org.gradle.api.Project
import org.gradle.kotlin.dsl.extra
import org.jetbrains.kotlin.konan.properties.hasProperty
import java.io.File
import java.io.FileInputStream
import java.io.InputStreamReader
Expand All @@ -17,16 +16,14 @@ val Project.releaseKeyStore: File get() = File(project.properties["keyStore"] as
val Project.releaseKeyStorePassword: String get() = project.properties["keyStorePassword"] as String
val Project.releaseKeyAlias: String get() = project.properties["keyAlias"] as String
val Project.releaseKeyPassword: String get() = project.properties["keyPassword"] as String
val Project.hasReleaseKeyStore: Boolean get() = run {
val Project.hasReleaseKeyStore: Boolean get() {
gradleSigningProperties(rootDir).apply {
if (!hasProperty("keyStore")) return@apply

stringPropertyNames().forEach {
project.extra[it] = getProperty(it)
}
}

project.hasProperty("keyStore")
return project.hasProperty("keyStore")
}

private fun gradleSigningProperties(rootDir: File): Properties {
Expand Down
Loading