From 283bc5acb4161d4c1121986897be407512f6ef81 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 10 Nov 2022 23:48:59 +0600 Subject: [PATCH] start --- build.gradle | 3 +- core/build.gradle | 1 - .../kmppscriptbuilder/core/models/License.kt | 5 +- .../core/models/MavenConfig.kt | 66 +++++++++++++++---- core/src/main/AndroidManifest.xml | 1 - defaultAndroidSettings.gradle | 40 ----------- extensions.gradle | 1 - gradle.properties | 24 ++----- gradle/wrapper/gradle-wrapper.properties | 2 +- mppJavaProject.gradle | 4 +- mppJsProject.gradle | 6 +- mppProjectWithSerialization.gradle | 16 +---- 12 files changed, 71 insertions(+), 98 deletions(-) delete mode 100644 core/src/main/AndroidManifest.xml delete mode 100644 defaultAndroidSettings.gradle diff --git a/build.gradle b/build.gradle index 4780292..eb0ada2 100644 --- a/build.gradle +++ b/build.gradle @@ -7,10 +7,9 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:$dexcount_version" classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" } } diff --git a/core/build.gradle b/core/build.gradle index fb2a4c1..e98b3fd 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,7 +1,6 @@ plugins { id "org.jetbrains.kotlin.multiplatform" id "org.jetbrains.kotlin.plugin.serialization" - id "com.android.library" } apply from: "$mppProjectWithSerializationPresetPath" diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt index 0a36c49..61dc9c8 100644 --- a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt @@ -4,6 +4,7 @@ import dev.inmo.kmppscriptbuilder.core.utils.serialFormat import io.ktor.client.HttpClient import io.ktor.client.request.get import io.ktor.client.request.url +import io.ktor.client.statement.bodyAsText import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.serializer @@ -20,9 +21,9 @@ private val commonLicensesListDeserializer = MapSerializer(String.serializer(), private var licenses: Map? = null suspend fun HttpClient.getLicenses(): Map { - val answer = get { + val answer = get { url("https://licenses.opendefinition.org/licenses/groups/all.json") - } + }.bodyAsText() return serialFormat.decodeFromString(commonLicensesListDeserializer, answer).also { gotLicenses -> licenses = gotLicenses } diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt index 8446f4e..1991cd8 100644 --- a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt @@ -31,23 +31,67 @@ data class MavenConfig( @Serializable data class MavenPublishingRepository( val name: String, - val url: String + val url: String, + val credsType: CredentialsType = CredentialsType.UsernameAndPassword( + "${name.uppercase()}_USER", + "${name.uppercase()}_PASSWORD" + ) ) { - private val nameCapitalized by lazy { - name.toUpperCase() - } + val defaultUsernameProperty = "${name.uppercase()}_USER" + val defaultPasswordProperty = "${name.uppercase()}_PASSWORD" + val defaultHeaderValueProperty = "${name.uppercase()}_TOKEN" - fun build(indent: String): String { - val usernameProperty = "${nameCapitalized}_USER" - val passwordProperty = "${nameCapitalized}_PASSWORD" - return """if ((project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)) { - maven { - name = "$name" - url = uri("$url") + @Serializable + sealed interface CredentialsType { + @Serializable + object Nothing: CredentialsType { + override fun buildCheckPart(): String = "true" + override fun buildCredsPart(): String = "" + } + @Serializable + data class UsernameAndPassword( + val usernameProperty: String, + val passwordProperty: String + ): CredentialsType { + override fun buildCheckPart(): String = "(project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)" + override fun buildCredsPart(): String { +return """ credentials { username = project.hasProperty('${usernameProperty}') ? project.property('${usernameProperty}') : System.getenv('${usernameProperty}') password = project.hasProperty('${passwordProperty}') ? project.property('${passwordProperty}') : System.getenv('${passwordProperty}') } +""" + } + } + @Serializable + data class HttpHeaderCredentials( + val headerName: String, + val headerValueProperty: String + ): CredentialsType { + override fun buildCheckPart(): String = "project.hasProperty('${headerValueProperty}') || System.getenv('${headerValueProperty}') != null" + override fun buildCredsPart(): String { +return """ + credentials(HttpHeaderCredentials) { + name = "$headerName" + value = project.hasProperty('${headerValueProperty}') ? project.property('${headerValueProperty}') : System.getenv('${headerValueProperty}') + } +""" + } + } + + fun buildCheckPart(): String + fun buildCredsPart(): String + } + private val nameCapitalized by lazy { + name.uppercase() + } + + fun build(indent: String): String { + return """if (${credsType.buildCheckPart()}) { + maven { + name = "$name" + url = uri("$url") +${credsType.buildCredsPart()} } }""".replace("\n", "\n$indent") } diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml deleted file mode 100644 index e3cc55a..0000000 --- a/core/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/defaultAndroidSettings.gradle b/defaultAndroidSettings.gradle deleted file mode 100644 index 79f821a..0000000 --- a/defaultAndroidSettings.gradle +++ /dev/null @@ -1,40 +0,0 @@ -apply plugin: 'com.getkeepsafe.dexcount' - -android { - compileSdkVersion "$android_compileSdkVersion".toInteger() - buildToolsVersion "$android_buildToolsVersion" - - defaultConfig { - minSdkVersion "$android_minSdkVersion".toInteger() - targetSdkVersion "$android_compileSdkVersion".toInteger() - versionCode "${android_code_version}".toInteger() - versionName "$version" - } - buildTypes { - release { - minifyEnabled false - } - debug { - debuggable true - } - } - - packagingOptions { - exclude 'META-INF/kotlinx-serialization-runtime.kotlin_module' - exclude 'META-INF/kotlinx-serialization-cbor.kotlin_module' - exclude 'META-INF/kotlinx-serialization-properties.kotlin_module' - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } -} diff --git a/extensions.gradle b/extensions.gradle index 2e89947..6525a65 100644 --- a/extensions.gradle +++ b/extensions.gradle @@ -16,7 +16,6 @@ allprojects { mppProjectWithSerializationPresetPath = "${rootProject.projectDir.absolutePath}/mppProjectWithSerialization.gradle" mppJavaProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppJavaProject.gradle" mppJsProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppJsProject.gradle" - mppAndroidProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppAndroidProject.gradle" defaultAndroidSettingsPresetPath = "${rootProject.projectDir.absolutePath}/defaultAndroidSettings.gradle" diff --git a/gradle.properties b/gradle.properties index 88bcb2d..cce3b81 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,27 +6,17 @@ kotlin.incremental.js=true android.useAndroidX=true android.enableJetifier=true -kotlin_version=1.6.10 -kotlin_coroutines_version=1.6.0 -kotlin_serialisation_core_version=1.3.2 -ktor_version=1.6.7 -micro_utils_version=0.9.0 +kotlin_version=1.7.20 +kotlin_coroutines_version=1.6.4 +kotlin_serialisation_core_version=1.4.1 +ktor_version=2.1.3 +micro_utils_version=0.14.1 -compose_version=1.0.1 - -# ANDROID - -android_minSdkVersion=21 -android_compileSdkVersion=32 -android_buildToolsVersion=32.0.0 -dexcount_version=3.0.1 -junit_version=4.12 -test_ext_junit_version=1.1.2 -espresso_core=3.3.0 +compose_version=1.2.1 # Dokka -dokka_version=1.6.0 +dokka_version=1.7.20 # Project data diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b7fd26..c50b3c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip diff --git a/mppJavaProject.gradle b/mppJavaProject.gradle index e2d5a08..dabc618 100644 --- a/mppJavaProject.gradle +++ b/mppJavaProject.gradle @@ -4,9 +4,7 @@ project.group = "$group" // apply from: "$publishGradlePath" kotlin { - jvm { - compilations.main.kotlinOptions.useIR = true - } + jvm() sourceSets { commonMain { diff --git a/mppJsProject.gradle b/mppJsProject.gradle index 6ee908a..05a797d 100644 --- a/mppJsProject.gradle +++ b/mppJsProject.gradle @@ -5,10 +5,8 @@ project.group = "$group" kotlin { js (IR) { - browser { - binaries.executable() - } - nodejs() + browser() + binaries.executable() } sourceSets { diff --git a/mppProjectWithSerialization.gradle b/mppProjectWithSerialization.gradle index 72b6115..d2337b3 100644 --- a/mppProjectWithSerialization.gradle +++ b/mppProjectWithSerialization.gradle @@ -4,16 +4,11 @@ project.group = "$group" // apply from: "$publishGradlePath" kotlin { - jvm { - compilations.main.kotlinOptions.useIR = true - } + jvm() js (IR) { browser() nodejs() } - android { - publishAllLibraryVariants() - } sourceSets { commonMain { @@ -39,14 +34,5 @@ kotlin { implementation kotlin('test-junit') } } - androidTest { - dependencies { - implementation kotlin('test-junit') - implementation "androidx.test.ext:junit:$test_ext_junit_version" - implementation "androidx.test.espresso:espresso-core:$espresso_core" - } - } } } - -apply from: "$defaultAndroidSettingsPresetPath"