|
|
@@ -28,8 +28,6 @@ import org.mjdev.gradle.extensions.runAfterAssembleTask
|
|
|
import org.mjdev.gradle.extensions.buildConfigString
|
|
|
import org.mjdev.gradle.extensions.extension
|
|
|
import org.mjdev.gradle.extensions.libs
|
|
|
-import org.mjdev.gradle.extensions.string
|
|
|
-import org.mjdev.gradle.extensions.int
|
|
|
import org.mjdev.gradle.extensions.manifestPlaceholders
|
|
|
import org.mjdev.gradle.extensions.implementation
|
|
|
import org.mjdev.gradle.extensions.debugImplementation
|
|
|
@@ -45,49 +43,27 @@ import org.mjdev.gradle.extensions.versionName
|
|
|
import org.mjdev.gradle.extensions.kotlinCompileOptions
|
|
|
import org.mjdev.gradle.extensions.detektTask
|
|
|
import org.mjdev.gradle.extensions.dokkaTask
|
|
|
+import org.mjdev.gradle.extensions.releaseNotesCreateTask
|
|
|
import org.mjdev.gradle.extensions.apply
|
|
|
import org.mjdev.gradle.extensions.projectName
|
|
|
-import org.mjdev.gradle.extensions.loadPropertiesFile
|
|
|
-import org.mjdev.gradle.extensions.runConfigured
|
|
|
+import org.mjdev.gradle.extensions.webServiceCreateTask
|
|
|
+import org.mjdev.gradle.extensions.loadRootPropertiesFile
|
|
|
+import org.mjdev.gradle.extensions.fromBuildPropertiesFile
|
|
|
import org.mjdev.gradle.plugin.config.AppConfig
|
|
|
-import org.mjdev.gradle.tasks.ReleaseNotesCleanTask
|
|
|
import org.mjdev.gradle.tasks.ReleaseNotesCreateTask
|
|
|
import org.mjdev.gradle.tasks.WebServiceCreateTask
|
|
|
-import org.mjdev.gradle.tasks.ZipReleaseClearTask
|
|
|
-import org.mjdev.gradle.tasks.ZipReleaseCreateTask
|
|
|
+import org.mjdev.gradle.tasks.CreatePropsTask
|
|
|
import org.kordamp.gradle.plugin.markdown.MarkdownPlugin
|
|
|
-import org.mjdev.gradle.extensions.markDownToHtmlTask
|
|
|
+import org.mjdev.gradle.extensions.assembleTasks
|
|
|
+import org.mjdev.gradle.extensions.zipReleaseCreateTask
|
|
|
+import org.mjdev.gradle.tasks.ZipReleaseCreateTask
|
|
|
|
|
|
@Suppress("UnstableApiUsage")
|
|
|
class AppPlugin : BasePlugin() {
|
|
|
- private val configFieldName = "appConfig"
|
|
|
-
|
|
|
override fun Project.work() {
|
|
|
- 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("---------------------------------------------------------------------")
|
|
|
+ val appConfig: AppConfig = extension<AppConfig>(AppConfig.configFieldName)
|
|
|
+ fromBuildPropertiesFile(appConfig, AppConfig.configPropertiesFile)
|
|
|
+ loadRootPropertiesFile(appConfig.versionPropertiesFile)
|
|
|
apply(plugin = "com.android.application")
|
|
|
apply(plugin = "kotlin-kapt")
|
|
|
apply(plugin = "kotlin-android")
|
|
|
@@ -100,47 +76,45 @@ class AppPlugin : BasePlugin() {
|
|
|
apply(MarkdownPlugin::class)
|
|
|
apply(DetektPlugin::class)
|
|
|
apply(KotlinterPlugin::class)
|
|
|
- registerTask<ReleaseNotesCleanTask> {
|
|
|
- enabled = appConfig.createReleaseNotes
|
|
|
+ registerTask<CreatePropsTask> {
|
|
|
+ propsFilePath = AppConfig.configPropertiesFile
|
|
|
+ propsClass = AppConfig::class.java
|
|
|
runAfterCleanTask()
|
|
|
}
|
|
|
- registerTask<ZipReleaseClearTask> {
|
|
|
- enabled = appConfig.createZipRelease
|
|
|
- runAfterCleanTask()
|
|
|
+ registerTask<ReleaseNotesCreateTask>() {
|
|
|
+ mustRunAfter(assembleTasks)
|
|
|
+ }
|
|
|
+ registerTask<WebServiceCreateTask>() {
|
|
|
+ mustRunAfter(assembleTasks)
|
|
|
+ }
|
|
|
+ registerTask<ZipReleaseCreateTask>() {
|
|
|
+ mustRunAfter(assembleTasks)
|
|
|
}
|
|
|
configure<ApplicationExtension> {
|
|
|
- // todo : move
|
|
|
- namespace = libs.versions.app.namespace.string
|
|
|
- // todo : move
|
|
|
- compileSdk = libs.versions.compileSdk.int
|
|
|
+ namespace = appConfig.namespace
|
|
|
+ compileSdk = AppConfig.compileSdk
|
|
|
setSigningConfigs(project) {
|
|
|
- // todo : move
|
|
|
- debugKeyFile = libs.versions.debug.keyfile.string
|
|
|
- // todo : move
|
|
|
- releaseKeyFile = libs.versions.release.keyfile.string
|
|
|
+ debugKeyFile = appConfig.debugKeySigningFile
|
|
|
+ releaseKeyFile = appConfig.releaseSigningFile
|
|
|
}
|
|
|
buildFeatures {
|
|
|
- compose = true
|
|
|
- buildConfig = true
|
|
|
+ compose = AppConfig.composeEnabled
|
|
|
+ buildConfig = AppConfig.buildConfigEnabled
|
|
|
}
|
|
|
compileOptions {
|
|
|
- // todo : move
|
|
|
- sourceCompatibility = appConfig.javaVersion
|
|
|
- // todo : move
|
|
|
- targetCompatibility = appConfig.javaVersion
|
|
|
+ sourceCompatibility = AppConfig.javaVersion
|
|
|
+ targetCompatibility = AppConfig.javaVersion
|
|
|
}
|
|
|
composeOptions {
|
|
|
- // todo : move
|
|
|
- kotlinCompilerExtensionVersion =
|
|
|
- libs.versions.kotlin.compiler.version.string
|
|
|
+ kotlinCompilerExtensionVersion = AppConfig.kotlinCompilerVersion
|
|
|
}
|
|
|
defaultConfig {
|
|
|
- applicationId = libs.versions.app.namespace.string
|
|
|
- minSdk = libs.versions.minSdk.int
|
|
|
- targetSdk = libs.versions.compileSdk.int
|
|
|
+ applicationId = appConfig.namespace
|
|
|
+ minSdk = AppConfig.minSdk
|
|
|
+ targetSdk = AppConfig.compileSdk
|
|
|
versionCode = project.versionCode
|
|
|
versionName = project.versionName
|
|
|
- multiDexEnabled = true
|
|
|
+ multiDexEnabled = AppConfig.multiDexEnabled
|
|
|
// todo : move
|
|
|
buildConfigString(
|
|
|
"IPTV_API_URL" to "https://iptv-org.github.io/api/",
|
|
|
@@ -154,11 +128,7 @@ class AppPlugin : BasePlugin() {
|
|
|
)
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
|
}
|
|
|
- packaging {
|
|
|
- resources {
|
|
|
- excludes.addAll(appConfig.projectExcludes)
|
|
|
- }
|
|
|
- }
|
|
|
+ packaging.resources.excludes.addAll(AppConfig.projectExcludes)
|
|
|
buildTypes {
|
|
|
debug {
|
|
|
applicationIdSuffix = ".$name"
|
|
|
@@ -176,9 +146,10 @@ class AppPlugin : BasePlugin() {
|
|
|
"sync_auth",
|
|
|
"sync"
|
|
|
)
|
|
|
+ // todo : move
|
|
|
proguardFiles(
|
|
|
- getDefaultProguardFile(appConfig.projectProguardFile),
|
|
|
- appConfig.projectProguardRulesFile
|
|
|
+ getDefaultProguardFile(appConfig.proguardFile),
|
|
|
+ appConfig.proguardRulesFile
|
|
|
)
|
|
|
}
|
|
|
release {
|
|
|
@@ -197,9 +168,10 @@ class AppPlugin : BasePlugin() {
|
|
|
"sync_auth",
|
|
|
"sync"
|
|
|
)
|
|
|
+ // todo : move
|
|
|
proguardFiles(
|
|
|
- getDefaultProguardFile(appConfig.projectProguardFile),
|
|
|
- appConfig.projectProguardRulesFile
|
|
|
+ getDefaultProguardFile(appConfig.proguardFile),
|
|
|
+ appConfig.proguardRulesFile
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
@@ -211,52 +183,48 @@ class AppPlugin : BasePlugin() {
|
|
|
checkAllWarnings = true
|
|
|
showAll = true
|
|
|
explainIssues = true
|
|
|
- // todo : move
|
|
|
- abortOnError = false
|
|
|
- // todo move
|
|
|
- warningsAsErrors = false
|
|
|
+ abortOnError = !appConfig.ignoreCodeFailures
|
|
|
+ warningsAsErrors = !appConfig.ignoreCodeFailures
|
|
|
disable += "UnusedIds"
|
|
|
}
|
|
|
testOptions {
|
|
|
unitTests.isReturnDefaultValues = true
|
|
|
}
|
|
|
testCoverage {
|
|
|
- jacocoVersion = libs.versions.jacoco.version.string
|
|
|
+ jacocoVersion = AppConfig.jacocoVersion
|
|
|
}
|
|
|
}
|
|
|
- runConfigured<AppConfig> {
|
|
|
- kotlinCompileOptions {
|
|
|
- kotlinOptions {
|
|
|
- freeCompilerArgs += "-Xjsr305=strict"
|
|
|
- jvmTarget = javaVersion.toString()
|
|
|
- }
|
|
|
- }
|
|
|
- detektTask {
|
|
|
- enabled = autoCorrectCode
|
|
|
+ afterEvaluate {
|
|
|
+ detektTask {
|
|
|
+ if (appConfig.autoCorrectCode) {
|
|
|
+ mustRunAfter(assembleTasks)
|
|
|
runAfterAssembleTask()
|
|
|
}
|
|
|
- dokkaTask {
|
|
|
- enabled = createDocumentation
|
|
|
- outputDirectory.set(rootDir.resolve(documentationDir))
|
|
|
- moduleName.set(projectName)
|
|
|
- suppressObviousFunctions.set(false)
|
|
|
- dokkaSourceSets.configureEach {
|
|
|
- offlineMode.set(false)
|
|
|
- includeNonPublic.set(false)
|
|
|
- skipDeprecated.set(false)
|
|
|
- failOnWarning.set(failOnDocumentationWarning)
|
|
|
- reportUndocumented.set(reportUndocumentedFiles)
|
|
|
- skipEmptyPackages.set(false)
|
|
|
- platform.set(Platform.jvm)
|
|
|
- jdkVersion.set(javaVersion.asInt())
|
|
|
- noStdlibLink.set(false)
|
|
|
- noJdkLink.set(false)
|
|
|
- noAndroidSdkLink.set(false)
|
|
|
- }
|
|
|
+ }
|
|
|
+ dokkaTask {
|
|
|
+ outputDirectory.set(rootDir.resolve(appConfig.documentationDir))
|
|
|
+ moduleName.set(projectName)
|
|
|
+ suppressObviousFunctions.set(false)
|
|
|
+ dokkaSourceSets.configureEach {
|
|
|
+ offlineMode.set(false)
|
|
|
+ includeNonPublic.set(false)
|
|
|
+ skipDeprecated.set(false)
|
|
|
+ failOnWarning.set(appConfig.failOnDocumentationWarning)
|
|
|
+ reportUndocumented.set(appConfig.reportUndocumentedFiles)
|
|
|
+ skipEmptyPackages.set(false)
|
|
|
+ platform.set(Platform.jvm)
|
|
|
+ jdkVersion.set(AppConfig.javaVersion.asInt())
|
|
|
+ noStdlibLink.set(false)
|
|
|
+ noJdkLink.set(false)
|
|
|
+ noAndroidSdkLink.set(false)
|
|
|
+ }
|
|
|
+ if (appConfig.createDocumentation) {
|
|
|
+ mustRunAfter(assembleTasks)
|
|
|
runAfterAssembleTask()
|
|
|
}
|
|
|
- markDownToHtmlTask {
|
|
|
- enabled = createWebSiteFromGit
|
|
|
+ }
|
|
|
+// markDownToHtmlTask {
|
|
|
+// enabled = appConfig.createWebSiteFromGit
|
|
|
// sourceDir = rootDir
|
|
|
// outputDir = rootDir.resolve("web")
|
|
|
// hardwraps = true
|
|
|
@@ -277,34 +245,45 @@ class AppPlugin : BasePlugin() {
|
|
|
// if(createWebSiteFromGit) {
|
|
|
// runAfterAssembleTask()
|
|
|
// }
|
|
|
- }
|
|
|
- registerTask<WebServiceCreateTask> {
|
|
|
- enabled = createWebApp
|
|
|
- domain = "localhost"
|
|
|
- servicePort = 2222
|
|
|
- serviceName = project.name
|
|
|
- serviceVersion = project.versionName
|
|
|
- serviceCompany = "mjdev"
|
|
|
- serviceLicense = ""
|
|
|
- runAfterCleanTask()
|
|
|
- }
|
|
|
- val rnTask = registerTask<ReleaseNotesCreateTask> {
|
|
|
- enabled = createReleaseNotes
|
|
|
+// }
|
|
|
+ releaseNotesCreateTask {
|
|
|
+ if (appConfig.createReleaseNotes) {
|
|
|
runAfterAssembleTask()
|
|
|
}
|
|
|
- registerTask<ZipReleaseCreateTask> {
|
|
|
- enabled = createZipRelease
|
|
|
- if (createReleaseNotes) mustRunAfter(rnTask)
|
|
|
+ }
|
|
|
+ webServiceCreateTask {
|
|
|
+ domain = "localhost"
|
|
|
+ servicePort = 2222
|
|
|
+ serviceName = project.name
|
|
|
+ serviceVersion = project.versionName
|
|
|
+ serviceCompany = "mjdev"
|
|
|
+ serviceLicense = ""
|
|
|
+ if (appConfig.createWebApp) {
|
|
|
runAfterAssembleTask()
|
|
|
}
|
|
|
+ }
|
|
|
+ zipReleaseCreateTask {
|
|
|
+ if (appConfig.createZipRelease) {
|
|
|
+ runAfterAssembleTask()
|
|
|
+ }
|
|
|
+ if (appConfig.createReleaseNotes) {
|
|
|
+ mustRunAfter(releaseNotesCreateTask())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ kotlinCompileOptions {
|
|
|
+ kotlinOptions {
|
|
|
+ freeCompilerArgs += "-Xjsr305=strict"
|
|
|
+ jvmTarget = AppConfig.javaVersion.toString()
|
|
|
+ }
|
|
|
+ }
|
|
|
configure<DetektExtension> {
|
|
|
- ignoreFailures = ignoreCodeFailures
|
|
|
- reportsDir = rootDir.resolve(codeReportsDir)
|
|
|
+ ignoreFailures = appConfig.ignoreCodeFailures
|
|
|
+ reportsDir = rootDir.resolve(appConfig.codeReportsDir)
|
|
|
@Suppress("DEPRECATION")
|
|
|
- config = files(project.rootDir.resolve(detectConfigFile))
|
|
|
+ config = files(project.rootDir.resolve(appConfig.detectConfigFile))
|
|
|
}
|
|
|
configure<KotlinterExtension> {
|
|
|
- ignoreFailures = ignoreCodeFailures
|
|
|
+ ignoreFailures = appConfig.ignoreCodeFailures
|
|
|
reporters = arrayOf("checkstyle", "plain")
|
|
|
}
|
|
|
}
|