milan jurkulák před 2 roky
rodič
revize
beb6796f8d

+ 12 - 9
.gitignore

@@ -8,6 +8,10 @@ buildSrc/.gradle
 buildSrc/.gradle/
 /buildSrc/.gradle
 /buildSrc/.gradle/
+/app/.gradle
+/app/.gradle/
+/tvlib/.gradle
+/tvlib/.gradle/
 
 # any build folder
 build
@@ -15,9 +19,14 @@ build/
 /build/
 /buildSrc/build
 /buildSrc/build/
+/tvlib/build
+/tvlib/build/
+/app/build
+/app/build/
 
 # Local configuration file (sdk path, etc)
 local.properties
+release*.zip
 
 # Log/OS Files
 *.log
@@ -51,19 +60,13 @@ google-services.json
 *.hprof!/release.zip
 
 # documentation
-!/documentation/release-notes-*.md
+!/documentation/release-notes*
 
 #reports
-!/reports/
-!/reports/app/
-!/reports/lib/
+/reports/app/
+/reports/lib/
 
 # web app
 !/web/app.nginx
 !/web/app.service
 !/web/package.json
-
-# tvlib
-!/tvlib/.gradle/
-!/tvlib/build/
-

+ 8 - 19
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/ProjectExt.kt

@@ -18,6 +18,7 @@ import com.android.build.gradle.api.BaseVariant
 import io.gitlab.arturbosch.detekt.Detekt
 import org.gradle.TaskExecutionRequest
 import org.gradle.accessors.dm.LibrariesForLibs
+import org.gradle.api.GradleException
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.Task
@@ -27,7 +28,6 @@ import org.gradle.api.tasks.SourceSet
 import org.gradle.api.tasks.SourceSet.MAIN_SOURCE_SET_NAME
 import org.gradle.api.tasks.SourceSet.TEST_SOURCE_SET_NAME
 import org.gradle.api.tasks.SourceSetContainer
-import org.gradle.api.tasks.TaskProvider
 import org.gradle.internal.impldep.jakarta.xml.bind.DatatypeConverter.parseBoolean
 import org.gradle.kotlin.dsl.extra
 import org.gradle.kotlin.dsl.findByType
@@ -170,16 +170,6 @@ val Project.androidExtension: AppExtension
 val Project.kotlinExtension: KotlinProjectExtension
     get() = extensions.getByName("kotlin") as KotlinProjectExtension
 
-//val Project.assembleTasks: List<Task>
-//    get() = mutableListOf<Task>().apply {
-//        androidExtension.apply {
-//            applicationVariants.all { variant ->
-//                val task = project.tasks.getByName("assemble${variant.name.capitalize()}")
-//                add(task)
-//            }
-//        }
-//    }
-
 val Project.variants: List<ApplicationVariant>
     get() = androidExtension.applicationVariants.toList()
 
@@ -241,11 +231,10 @@ inline fun <reified T> Project.extension(name: String? = null): T = runCatching
     cfg!!
 }.getOrThrow()
 
-inline fun <reified T : Any> Project.extension(): T = runCatching {
-    extensions.getByType(T::class.java)
-}.onFailure {
-    println("Config missing.")
-}.getOrThrow()
+inline fun <reified T : Any> Project.extension(): T =
+    rootProject.extensions.findByType(T::class.java)
+        ?: project.extensions.findByType(T::class.java) ?:
+        throw (GradleException("Extension not configured : ${T::class.java.simpleName}"))
 
 inline fun <reified T : Task> Project.registerTask(
     name: String? = null,
@@ -333,12 +322,12 @@ inline fun <reified T> Project.runConfigured(crossinline function: T.() -> Unit)
     afterEvaluate {
         val config = project.extension<T>()
         if (config is BuildConfigs) {
-//            project.androidExtension.buildTypes.forEach { bt ->
-//                println("> Configuring build : ${bt.name}")
+            project.androidExtension.buildTypes.forEach { bt ->
+                println("> Configuring build : ${bt.name}")
 //                val btConfig = config.buildTypes[bt.name.lowercase()]
 //                println ("> Config: $btConfig")
 //                btConfig?.invoke(bt)
-//            }
+            }
         }
         function(config)
     }

+ 3 - 0
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/TaskExt.kt

@@ -65,6 +65,9 @@ val Task.tasks: TaskContainer
 val Task.cleanTask: Task
     get() = tasks.byName<Task>("clean")
 
+val Task.tasksTask : Task
+    get() = tasks.byName<Task>("tasks")
+
 val Task.taskGroup: String
     get() = this.group.toString()
 

+ 50 - 46
buildSrc/src/main/kotlin/org/mjdev/gradle/plugin/AppPlugin.kt

@@ -11,7 +11,6 @@ package org.mjdev.gradle.plugin
 import com.android.build.api.dsl.ApplicationExtension
 import io.gitlab.arturbosch.detekt.DetektPlugin
 import io.gitlab.arturbosch.detekt.extensions.DetektExtension
-import org.gradle.api.JavaVersion
 import org.gradle.api.Project
 import org.gradle.api.artifacts.dsl.LockMode
 import org.gradle.kotlin.dsl.apply
@@ -58,36 +57,39 @@ import org.mjdev.gradle.tasks.WebServiceCreateTask
 import org.mjdev.gradle.tasks.ZipReleaseClearTask
 import org.mjdev.gradle.tasks.ZipReleaseCreateTask
 import org.kordamp.gradle.plugin.markdown.MarkdownPlugin
+import org.mjdev.gradle.extensions.kotlinCompileOptions
 import org.mjdev.gradle.extensions.markDownToHtmlTask
+import org.mjdev.gradle.extensions.runConfigured
 
-@Suppress("UnstableApiUsage")
 class AppPlugin : BasePlugin() {
     private val configFieldName = "appConfig"
 
-    // todo : move
-    private val projectJavaVersion = JavaVersion.VERSION_17
-
-    // todo : move
-    private val projectExcludes = listOf(
-        "META-INF/",
-        "/META-INF/{AL2.0,LGPL2.1}",
-        "/META-INF/DEPENDENCIES",
-        "/mozilla/public-suffix-list.txt",
-        "okhttp3/",
-        "kotlin/",
-        "org/",
-        ".properties",
-        ".bin",
-    )
-    private val projectProguardFile = "proguard-android-optimize.txt"
-    private val projectProguardRulesFile = "proguard-rules.pro"
-
-    // todo : move
-    private val versionPropertiesFile = "config/version.prop"
-
     override fun Project.work() {
-        extension<AppConfig>(configFieldName)
-        loadPropertiesFile(versionPropertiesFile)
+        val appConfig = extension<AppConfig>(configFieldName)
+        loadPropertiesFile(appConfig.versionPropertiesFile)
+        println("---------------------------------------------------------------------")
+        println("App Configuration")
+        println("---------------------------------------------------------------------")
+        println("Project version : ${project.versionName}")
+        println("Project description : $description")
+        println("---------------------------------------------------------------------")
+        println("autoCorrectCode : ${appConfig.autoCorrectCode}")
+        println("ignoreCodeFailures : ${appConfig.ignoreCodeFailures}")
+        println("createDocumentation : ${appConfig.createDocumentation}")
+        println("reportUndocumentedFiles : ${appConfig.reportUndocumentedFiles}")
+        println("failOnDocumentationWarning : ${appConfig.failOnDocumentationWarning}")
+        println("createReleaseNotes : ${appConfig.createReleaseNotes}")
+        println("createZipRelease : ${appConfig.createZipRelease}")
+        println("createInfoClass : ${appConfig.createInfoClass}")
+        println("createWebApp : ${appConfig.createWebApp}")
+        println("createWebSiteFromGit : ${appConfig.createWebSiteFromGit}")
+        println("renameApkOutputByAppID : ${appConfig.renameApkOutputByAppID}")
+        println("launcherIconByBuildType : ${appConfig.launcherIconByBuildType}")
+        println("---------------------------------------------------------------------")
+        println("codeReportsDir : ${appConfig.codeReportsDir}")
+        println("documentationDir : ${appConfig.documentationDir}")
+        println("detectConfigFile : ${appConfig.detectConfigFile}")
+        println("---------------------------------------------------------------------")
         apply(plugin = "com.android.application")
         apply(plugin = "kotlin-kapt")
         apply(plugin = "kotlin-android")
@@ -102,7 +104,6 @@ class AppPlugin : BasePlugin() {
         apply(KotlinterPlugin::class)
         registerTask<ReleaseNotesCleanTask> { runAfterCleanTask() }
         registerTask<ZipReleaseClearTask> { runAfterCleanTask() }
-        registerTask<ApplicationConfigTask> { runAfterCleanTask() }
         configure<ApplicationExtension> {
             // todo : move
             namespace = libs.versions.app.namespace.string
@@ -120,13 +121,14 @@ class AppPlugin : BasePlugin() {
             }
             compileOptions {
                 // todo : move
-                sourceCompatibility = projectJavaVersion
+                sourceCompatibility = appConfig.javaVersion
                 // todo : move
-                targetCompatibility = projectJavaVersion
+                targetCompatibility = appConfig.javaVersion
             }
             composeOptions {
                 // todo : move
-                kotlinCompilerExtensionVersion = libs.versions.kotlin.compiler.version.string
+                kotlinCompilerExtensionVersion =
+                    libs.versions.kotlin.compiler.version.string
             }
             defaultConfig {
                 applicationId = libs.versions.app.namespace.string
@@ -150,7 +152,7 @@ class AppPlugin : BasePlugin() {
             }
             packaging {
                 resources {
-                    excludes.addAll(projectExcludes)
+                    excludes.addAll(appConfig.projectExcludes)
                 }
             }
             buildTypes {
@@ -171,8 +173,8 @@ class AppPlugin : BasePlugin() {
                         "sync"
                     )
                     proguardFiles(
-                        getDefaultProguardFile(projectProguardFile),
-                        projectProguardRulesFile
+                        getDefaultProguardFile(appConfig.projectProguardFile),
+                        appConfig.projectProguardRulesFile
                     )
                 }
                 release {
@@ -192,8 +194,8 @@ class AppPlugin : BasePlugin() {
                         "sync"
                     )
                     proguardFiles(
-                        getDefaultProguardFile(projectProguardFile),
-                        projectProguardRulesFile
+                        getDefaultProguardFile(appConfig.projectProguardFile),
+                        appConfig.projectProguardRulesFile
                     )
                 }
             }
@@ -222,7 +224,7 @@ class AppPlugin : BasePlugin() {
             kotlinCompileOptions {
                 kotlinOptions {
                     freeCompilerArgs += "-Xjsr305=strict"
-                    jvmTarget = projectJavaVersion.toString()
+                    jvmTarget = javaVersion.toString()
                 }
             }
             detektTask {
@@ -241,7 +243,7 @@ class AppPlugin : BasePlugin() {
                     reportUndocumented.set(reportUndocumentedFiles)
                     skipEmptyPackages.set(false)
                     platform.set(Platform.jvm)
-                    jdkVersion.set(projectJavaVersion.asInt())
+                    jdkVersion.set(javaVersion.asInt())
                     noStdlibLink.set(false)
                     noJdkLink.set(false)
                     noAndroidSdkLink.set(false)
@@ -302,16 +304,6 @@ class AppPlugin : BasePlugin() {
                 ignoreFailures = ignoreCodeFailures
                 reporters = arrayOf("checkstyle", "plain")
             }
-//            if (appConfig.renameApkOutputByAppID) {
-//                applicationVariants.all {
-//                    outputs.map {
-//                        it as BaseVariantOutputImpl
-//                    }.forEach { output ->
-//                        val outputFileName = "$applicationId-$versionName.apk"
-//                        output.outputFileName = outputFileName
-//                    }
-//                }
-//            }
         }
         dependencyLocking {
             lockMode.set(LockMode.STRICT)
@@ -430,3 +422,15 @@ class AppPlugin : BasePlugin() {
         }
     }
 }
+
+// todo task
+//if (appConfig.renameApkOutputByAppID) {
+//    applicationVariants.all {
+//        outputs.map {
+//            it as BaseVariantOutputImpl
+//        }.forEach { output ->
+//            val outputFileName = "$applicationId-$versionName.apk"
+//            output.outputFileName = outputFileName
+//        }
+//    }
+//}

+ 11 - 27
buildSrc/src/main/kotlin/org/mjdev/gradle/plugin/LibPlugin.kt

@@ -44,25 +44,9 @@ import org.mjdev.gradle.extensions.runConfigured
 @Suppress("UnstableApiUsage")
 class LibPlugin : BasePlugin() {
     private val configFieldName = "libConfig"
-    // todo : move
-    private val projectJavaVersion = JavaVersion.VERSION_17
-    // todo : move
-    private val projectExcludes = listOf(
-        "META-INF/",
-        "/META-INF/{AL2.0,LGPL2.1}",
-        "/META-INF/DEPENDENCIES",
-        "/mozilla/public-suffix-list.txt",
-        "okhttp3/",
-        "kotlin/",
-        "org/",
-        ".properties",
-        ".bin",
-    )
-    private val projectProguardFile = "proguard-android-optimize.txt"
-    private val projectProguardRulesFile = "proguard-rules.pro"
 
     override fun Project.work() {
-        extension<LibConfig>(configFieldName)
+        val libConfig = extension<LibConfig>(configFieldName)
         apply(plugin = "kotlin-android")
         apply(plugin = "com.android.library")
         apply(plugin = "kotlin-kapt")
@@ -81,9 +65,9 @@ class LibPlugin : BasePlugin() {
             compileSdk = libs.versions.compileSdk.int
             compileOptions {
                 // todo : move
-                sourceCompatibility = projectJavaVersion
+                sourceCompatibility = libConfig.javaVersion
                 // todo : move
-                targetCompatibility = projectJavaVersion
+                targetCompatibility = libConfig.javaVersion
             }
             buildFeatures {
                 compose = true
@@ -100,7 +84,7 @@ class LibPlugin : BasePlugin() {
             }
             packaging {
                 resources {
-                    excludes.addAll(projectExcludes)
+                    excludes.addAll(libConfig.projectExcludes)
                 }
             }
             buildTypes {
@@ -108,8 +92,8 @@ class LibPlugin : BasePlugin() {
                     isMinifyEnabled = false
                     isShrinkResources = false
                     proguardFiles(
-                        getDefaultProguardFile(projectProguardFile),
-                        projectProguardRulesFile
+                        getDefaultProguardFile(libConfig.projectProguardFile),
+                        libConfig.projectProguardRulesFile
                     )
                 }
                 release {
@@ -117,8 +101,8 @@ class LibPlugin : BasePlugin() {
                     isMinifyEnabled = false
                     isShrinkResources = false
                     proguardFiles(
-                        getDefaultProguardFile(projectProguardFile),
-                        projectProguardRulesFile
+                        getDefaultProguardFile(libConfig.projectProguardFile),
+                        libConfig.projectProguardRulesFile
                     )
                 }
             }
@@ -145,10 +129,10 @@ class LibPlugin : BasePlugin() {
             }
         }
         runConfigured<LibConfig> {
-            kotlinCompileOptions{
+            kotlinCompileOptions {
                 kotlinOptions {
                     freeCompilerArgs += "-Xjsr305=strict"
-                    jvmTarget = projectJavaVersion.toString()
+                    jvmTarget = javaVersion.toString()
                 }
             }
             detektTask {
@@ -167,7 +151,7 @@ class LibPlugin : BasePlugin() {
                     reportUndocumented.set(reportUndocumentedFiles)
                     skipEmptyPackages.set(false)
                     platform.set(Platform.jvm)
-                    jdkVersion.set(projectJavaVersion.asInt())
+                    jdkVersion.set(javaVersion.asInt())
                     noStdlibLink.set(false)
                     noJdkLink.set(false)
                     noAndroidSdkLink.set(false)

+ 24 - 5
buildSrc/src/main/kotlin/org/mjdev/gradle/plugin/config/AppConfig.kt

@@ -8,6 +8,7 @@
 
 package org.mjdev.gradle.plugin.config
 
+import org.gradle.api.JavaVersion
 import org.mjdev.gradle.plugin.config.base.BuildConfigs
 
 @Suppress("unused")
@@ -15,15 +16,15 @@ open class AppConfig : BuildConfigs() {
 
     open var description = ""
 
-    open var autoCorrectCode = false
+    open var autoCorrectCode = true
     open var ignoreCodeFailures = true
-    open var createDocumentation = false
+    open var createDocumentation = true
     open var reportUndocumentedFiles = false
     open var failOnDocumentationWarning = false
-    open var createReleaseNotes = false
-    open var createZipRelease = false
+    open var createReleaseNotes = true
+    open var createZipRelease = true
 
-    open var createWebApp = false
+    open var createWebApp = true
     open var createWebSiteFromGit = false
     open var renameApkOutputByAppID = false
     open var createInfoClass = false
@@ -33,4 +34,22 @@ open class AppConfig : BuildConfigs() {
     open var documentationDir = "documentation/app"
     open var detectConfigFile = "config/detekt.yml"
 
+    open var javaVersion = JavaVersion.VERSION_17
+
+    open var projectExcludes = listOf(
+        "META-INF/",
+        "/META-INF/{AL2.0,LGPL2.1}",
+        "/META-INF/DEPENDENCIES",
+        "/mozilla/public-suffix-list.txt",
+        "okhttp3/",
+        "kotlin/",
+        "org/",
+        ".properties",
+        ".bin",
+    )
+
+    open var projectProguardFile = "proguard-android-optimize.txt"
+    open var projectProguardRulesFile = "proguard-rules.pro"
+    open var versionPropertiesFile = "config/version.prop"
+
 }

+ 22 - 2
buildSrc/src/main/kotlin/org/mjdev/gradle/plugin/config/LibConfig.kt

@@ -8,10 +8,12 @@
 
 package org.mjdev.gradle.plugin.config
 
+import org.gradle.api.JavaVersion
+
 open class LibConfig {
-    open var autoCorrectCode = false
+    open var autoCorrectCode = true
     open var ignoreCodeFailures = true
-    open var createDocumentation = false
+    open var createDocumentation = true
     open var reportUndocumentedFiles = false
     open var failOnDocumentationWarning = false
     open var minify = false
@@ -19,4 +21,22 @@ open class LibConfig {
     open var codeReportsDir = "reports/lib"
     open var documentationDir = "documentation/lib"
     open var detectConfigFile = "config/detekt.yml"
+
+    open var javaVersion = JavaVersion.VERSION_17
+
+    open var projectExcludes = listOf(
+        "META-INF/",
+        "/META-INF/{AL2.0,LGPL2.1}",
+        "/META-INF/DEPENDENCIES",
+        "/mozilla/public-suffix-list.txt",
+        "okhttp3/",
+        "kotlin/",
+        "org/",
+        ".properties",
+        ".bin",
+    )
+
+    open var projectProguardFile = "proguard-android-optimize.txt"
+    open var projectProguardRulesFile = "proguard-rules.pro"
+    open var versionPropertiesFile = "config/version.prop"
 }

+ 2 - 1
gradle/libs.versions.toml

@@ -215,7 +215,7 @@ sandwich = { module = "com.github.skydoves:sandwich", version.ref = "sandwich" }
 sandwich-retrofit = { module = "com.github.skydoves:sandwich-retrofit", version.ref = "sandwich" }
 timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
 zxing-core = { module = "com.google.zxing:core", version.ref = "zxing-core" }
-
+#
 #classpath("org.jetbrains.kotlin:kotlin-scripting-jsr223:1.9.22")
 #classpath("org.jetbrains.kotlin:kotlin-scripting-common:1.9.22")
 #classpath("org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22")
@@ -224,6 +224,7 @@ zxing-core = { module = "com.google.zxing:core", version.ref = "zxing-core" }
 #classpath("com.bmuschko:gradle-docker-plugin:9.4.0")
 #classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
 #classpath("com.newrelic.agent.android:agent-gradle-plugin:5.9.0")
+
 ## plugins #########################################################################################
 [plugins]
 android-application = "com.android.application:8.3.2"