diff --git a/.github/workflows/d4l-ci-latest-version.yml b/.github/workflows/d4l-ci-latest-version.yml index 35b9ea6..19aee2c 100644 --- a/.github/workflows/d4l-ci-latest-version.yml +++ b/.github/workflows/d4l-ci-latest-version.yml @@ -9,11 +9,13 @@ on: jobs: latest-version: - runs-on: [self-hosted, macos] + runs-on: macos-latest env: - PACKAGE_REGISTRY_USERNAME: ${{ secrets.PACKAGE_REGISTRY_USERNAME }} - PACKAGE_REGISTRY_TOKEN: ${{ secrets.PACKAGE_REGISTRY_TOKEN }} + PACKAGE_REGISTRY_DOWNLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_USERNAME }} + PACKAGE_REGISTRY_DOWNLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_TOKEN }} + PACKAGE_REGISTRY_UPLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_USERNAME }} + PACKAGE_REGISTRY_UPLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_TOKEN }} steps: - name: Display runner context diff --git a/.github/workflows/d4l-ci-publish-release.yml b/.github/workflows/d4l-ci-publish-release.yml index 6e101e2..2085d8d 100644 --- a/.github/workflows/d4l-ci-publish-release.yml +++ b/.github/workflows/d4l-ci-publish-release.yml @@ -8,11 +8,13 @@ on: jobs: publish-release: - runs-on: [self-hosted, macos] + runs-on: macos-latest env: - PACKAGE_REGISTRY_USERNAME: ${{ secrets.PACKAGE_REGISTRY_USERNAME }} - PACKAGE_REGISTRY_TOKEN: ${{ secrets.PACKAGE_REGISTRY_TOKEN }} + PACKAGE_REGISTRY_DOWNLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_USERNAME }} + PACKAGE_REGISTRY_DOWNLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_TOKEN }} + PACKAGE_REGISTRY_UPLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_USERNAME }} + PACKAGE_REGISTRY_UPLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_TOKEN }} steps: - name: Display runner context diff --git a/.github/workflows/d4l-ci-pull-request-validation.yml b/.github/workflows/d4l-ci-pull-request-validation.yml index 977747a..ace1480 100644 --- a/.github/workflows/d4l-ci-pull-request-validation.yml +++ b/.github/workflows/d4l-ci-pull-request-validation.yml @@ -10,11 +10,17 @@ on: jobs: pull-request-validation: - runs-on: [self-hosted, macos] + runs-on: macos-latest + + concurrency: + group: validation-${{ github.head_ref }} + cancel-in-progress: true env: - PACKAGE_REGISTRY_USERNAME: ${{ secrets.PACKAGE_REGISTRY_USERNAME }} - PACKAGE_REGISTRY_TOKEN: ${{ secrets.PACKAGE_REGISTRY_TOKEN }} + PACKAGE_REGISTRY_DOWNLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_USERNAME }} + PACKAGE_REGISTRY_DOWNLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_DOWNLOAD_TOKEN }} + PACKAGE_REGISTRY_UPLOAD_USERNAME: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_USERNAME }} + PACKAGE_REGISTRY_UPLOAD_TOKEN: ${{ secrets.PACKAGE_REGISTRY_UPLOAD_TOKEN }} steps: - name: Display runner context diff --git a/.gitignore b/.gitignore index 87d22a4..ac414b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Gradle .gradle/ +.gradle/* build/ out/ local.properties @@ -16,7 +17,6 @@ local.properties !.idea/codeStyles/ !.idea/encoding.xml !.idea/copyright/ -!.idea/compiler.xml # generated diff --git a/.gradle/6.5/fileChanges/last-build.bin b/.gradle/6.5/fileChanges/last-build.bin deleted file mode 100644 index f76dd23..0000000 Binary files a/.gradle/6.5/fileChanges/last-build.bin and /dev/null differ diff --git a/.gradle/6.5/fileHashes/fileHashes.bin b/.gradle/6.5/fileHashes/fileHashes.bin deleted file mode 100644 index 2ddaabd..0000000 Binary files a/.gradle/6.5/fileHashes/fileHashes.bin and /dev/null differ diff --git a/.gradle/6.5/fileHashes/fileHashes.lock b/.gradle/6.5/fileHashes/fileHashes.lock deleted file mode 100644 index 582b3a5..0000000 Binary files a/.gradle/6.5/fileHashes/fileHashes.lock and /dev/null differ diff --git a/.gradle/6.5/gc.properties b/.gradle/6.5/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/6.8.3/fileChanges/last-build.bin b/.gradle/6.8.3/fileChanges/last-build.bin deleted file mode 100644 index f76dd23..0000000 Binary files a/.gradle/6.8.3/fileChanges/last-build.bin and /dev/null differ diff --git a/.gradle/6.8.3/fileHashes/fileHashes.bin b/.gradle/6.8.3/fileHashes/fileHashes.bin deleted file mode 100644 index 8d69f2c..0000000 Binary files a/.gradle/6.8.3/fileHashes/fileHashes.bin and /dev/null differ diff --git a/.gradle/6.8.3/fileHashes/fileHashes.lock b/.gradle/6.8.3/fileHashes/fileHashes.lock deleted file mode 100644 index d65e5de..0000000 Binary files a/.gradle/6.8.3/fileHashes/fileHashes.lock and /dev/null differ diff --git a/.gradle/6.8.3/gc.properties b/.gradle/6.8.3/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index c7482dc..0000000 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index 14bd8b9..0000000 --- a/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Thu Aug 05 11:15:45 CEST 2021 -gradle.version=6.8.3 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index 35a25da..0000000 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and /dev/null differ diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock deleted file mode 100644 index 3313506..0000000 Binary files a/.gradle/checksums/checksums.lock and /dev/null differ diff --git a/.gradle/checksums/md5-checksums.bin b/.gradle/checksums/md5-checksums.bin deleted file mode 100644 index 8d5957f..0000000 Binary files a/.gradle/checksums/md5-checksums.bin and /dev/null differ diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin deleted file mode 100644 index 8dd6ddf..0000000 Binary files a/.gradle/checksums/sha1-checksums.bin and /dev/null differ diff --git a/.gradle/configuration-cache/gc.properties b/.gradle/configuration-cache/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/workspace-id.txt b/.gradle/workspace-id.txt deleted file mode 100644 index ff53118..0000000 Binary files a/.gradle/workspace-id.txt and /dev/null differ diff --git a/.gradle/workspace-id.txt.lock b/.gradle/workspace-id.txt.lock deleted file mode 100644 index 12a0a38..0000000 Binary files a/.gradle/workspace-id.txt.lock and /dev/null differ diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 234ecfd..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.adoc b/README.adoc index 3e40da0..2a8b055 100644 --- a/README.adoc +++ b/README.adoc @@ -1,5 +1,5 @@ -= Data4Life Result Util SDK -:result-util-sdk-version: 0.1.0 += Data4Life Result SDK +:result-sdk-version: 0.1.0 :doctype: article :!showtitle: :toc: macro diff --git a/build.gradle.kts b/build.gradle.kts index 9cf0fa2..1e0a173 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,22 +13,17 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ - -buildscript { - dependencies { - classpath(GradlePlugins.kotlin) - classpath(GradlePlugins.android) - } -} +import care.data4life.sdk.result.dependency.d4l +import care.data4life.sdk.result.dependency.gitHub plugins { - kotlinMultiplatform(false) + id("care.data4life.sdk.result.dependency") - id("scripts.dependency-updates") - id("scripts.download-scripts") - id("scripts.publishing") - id("scripts.quality-spotless") - id("scripts.versioning") + id("care.data4life.sdk.result.dependency-updates") + id("care.data4life.sdk.result.download-scripts") + id("care.data4life.sdk.result.publishing") + id("care.data4life.sdk.result.quality-spotless") + id("care.data4life.sdk.result.versioning") } allprojects { @@ -43,6 +38,6 @@ allprojects { } tasks.named("wrapper") { - gradleVersion = "6.8.3" + gradleVersion = "6.9" distributionType = Wrapper.DistributionType.ALL } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 03ca8a1..c3ee132 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -16,14 +16,20 @@ plugins { `kotlin-dsl` + + id("care.data4life.sdk.result.dependency") } repositories { gradlePluginPortal() mavenCentral() + google() } dependencies { + implementation(care.data4life.sdk.result.dependency.GradlePlugin.kotlin) + implementation(care.data4life.sdk.result.dependency.GradlePlugin.android) + // dependency-updates implementation("com.github.ben-manes:gradle-versions-plugin:0.38.0") // download-scripts diff --git a/buildSrc/src/main/kotlin/LibraryConfig.kt b/buildSrc/src/main/kotlin/care/data4life/sdk/result/LibraryConfig.kt similarity index 91% rename from buildSrc/src/main/kotlin/LibraryConfig.kt rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/LibraryConfig.kt index 45f0f49..269529f 100644 --- a/buildSrc/src/main/kotlin/LibraryConfig.kt +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/LibraryConfig.kt @@ -13,22 +13,23 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +package care.data4life.sdk.result object LibraryConfig { + val publishConfig = PublishConfig + val android = AndroidLibraryConfig + const val group = "care.data4life" const val name = "hc-result-sdk-kmp" const val githubOwner = "d4l-data4life" const val githubRepository = "hc-result-sdk-kmp" - val publish = PublishConfig - object PublishConfig { - const val name = LibraryConfig.name + const val groupId = "care.data4life.hc-result-sdk-kmp" const val description = "This is the Result SDK which provides unified result types and errors for other SDK's." - const val groupId = "${LibraryConfig.group}.${LibraryConfig.name}" - const val year = "2020" + const val year = "2021" // URL const val host = "github.com" @@ -52,8 +53,6 @@ object LibraryConfig { const val scmDeveloperConnection = scmConnection } - val android = AndroidLibraryConfig - object AndroidLibraryConfig { const val minSdkVersion = 23 const val compileSdkVersion = 30 diff --git a/buildSrc/src/main/kotlin/scripts/dependency-updates.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/dependency-updates.gradle.kts similarity index 98% rename from buildSrc/src/main/kotlin/scripts/dependency-updates.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/dependency-updates.gradle.kts index 79ae582..57ad4ef 100644 --- a/buildSrc/src/main/kotlin/scripts/dependency-updates.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/dependency-updates.gradle.kts @@ -14,7 +14,7 @@ * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result /** * [DependencyUpdates](https://github.com/ben-manes/gradle-versions-plugin) diff --git a/buildSrc/src/main/kotlin/scripts/download-scripts.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/download-scripts.gradle.kts similarity index 98% rename from buildSrc/src/main/kotlin/scripts/download-scripts.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/download-scripts.gradle.kts index e311c63..1b40817 100644 --- a/buildSrc/src/main/kotlin/scripts/download-scripts.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/download-scripts.gradle.kts @@ -14,7 +14,7 @@ * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result import de.undercouch.gradle.tasks.download.Download diff --git a/buildSrc/src/main/kotlin/scripts/publishing-config.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing-config.gradle.kts similarity index 60% rename from buildSrc/src/main/kotlin/scripts/publishing-config.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing-config.gradle.kts index d760dbb..b782e83 100644 --- a/buildSrc/src/main/kotlin/scripts/publishing-config.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing-config.gradle.kts @@ -14,26 +14,27 @@ * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result -import LibraryConfig import org.gradle.api.publish.maven.MavenPublication /** - * Usage: + * Install: * - * Now just add id("scripts.publishing-config") to your projects build.gradle.kts plugins section + * Just add id("care.data4life.sdk.result.publishing-config") to your project module build.gradle.kts plugins section * * plugins { - * id("scripts.publishing") + * id("care.data4life.sdk.result.publishing-config") * } * + * Usage: + * * To publish to to https://github.com/d4l-data4life/maven-repository/ just run: * - ./gradlew publishFeature * - ./gradlew publishSnapshot * - ./gradlew publishRelease * - * This requires a LibraryConfig as defined here https://github.com/d4l-data4life/hc-gradle-scripts/blob/main/buildSrc/src/main/kotlin/LibraryConfig.kt + * This requires a care.data4life.sdk.result.care.data4life.sdk.result.LibraryConfig configured */ plugins { `maven-publish` @@ -46,9 +47,9 @@ publishing { setUrl("https://maven.pkg.github.com/${LibraryConfig.githubOwner}/${LibraryConfig.githubRepository}") credentials { username = (project.findProperty("gpr.user") - ?: System.getenv("PACKAGE_REGISTRY_USERNAME")).toString() + ?: System.getenv("PACKAGE_REGISTRY_UPLOAD_USERNAME")).toString() password = (project.findProperty("gpr.key") - ?: System.getenv("PACKAGE_REGISTRY_TOKEN")).toString() + ?: System.getenv("PACKAGE_REGISTRY_UPLOAD_TOKEN")).toString() } } @@ -72,34 +73,33 @@ publishing { publications { withType { - groupId = LibraryConfig.publish.groupId + groupId = LibraryConfig.PublishConfig.groupId pom { - name.set(LibraryConfig.publish.name) - description.set(LibraryConfig.publish.description) - url.set(LibraryConfig.publish.url) - inceptionYear.set(LibraryConfig.publish.year) + description.set(LibraryConfig.PublishConfig.description) + url.set(LibraryConfig.PublishConfig.url) + inceptionYear.set(LibraryConfig.PublishConfig.year) licenses { license { - name.set(LibraryConfig.publish.licenseName) - url.set(LibraryConfig.publish.licenseUrl) - distribution.set(LibraryConfig.publish.licenseDistribution) + name.set(LibraryConfig.PublishConfig.licenseName) + url.set(LibraryConfig.PublishConfig.licenseUrl) + distribution.set(LibraryConfig.PublishConfig.licenseDistribution) } } developers { developer { - id.set(LibraryConfig.publish.developerId) - name.set(LibraryConfig.publish.developerName) - email.set(LibraryConfig.publish.developerEmail) + id.set(LibraryConfig.PublishConfig.developerId) + name.set(LibraryConfig.PublishConfig.developerName) + email.set(LibraryConfig.PublishConfig.developerEmail) } } scm { - connection.set(LibraryConfig.publish.scmConnection) - developerConnection.set(LibraryConfig.publish.scmDeveloperConnection) - url.set(LibraryConfig.publish.scmUrl) + connection.set(LibraryConfig.PublishConfig.scmConnection) + developerConnection.set(LibraryConfig.PublishConfig.scmDeveloperConnection) + url.set(LibraryConfig.PublishConfig.scmUrl) } } } diff --git a/buildSrc/src/main/kotlin/scripts/publishing.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing.gradle.kts similarity index 94% rename from buildSrc/src/main/kotlin/scripts/publishing.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing.gradle.kts index 8431398..19dc41f 100644 --- a/buildSrc/src/main/kotlin/scripts/publishing.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/publishing.gradle.kts @@ -14,9 +14,8 @@ * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result -import LibraryConfig import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.ResetCommand import org.eclipse.jgit.transport.PushResult @@ -24,7 +23,9 @@ import org.eclipse.jgit.transport.RemoteRefUpdate import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider /** - * Usage: + * Publish generated artefacts to our maven-repository using [jGit](https://www.eclipse.org/jgit/) + * + * Install: * * You need to add following dependencies to the buildSrc/build.gradle.kts * @@ -38,12 +39,14 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider * mavenCentral() * } * - * Now just add id("scripts.publishing") to your rootProject build.gradle.kts plugins + * Now just add id("care.data4life.sdk.result.publishing") to your rootProject build.gradle.kts plugins * * plugins { - * id("scripts.publishing") + * id("care.data4life.sdk.result.publishing") * } * + * Usage: + * * To publish to to https://github.com/d4l-data4life/maven-features/ just run: * - ./gradlew publishFeature * To publish to to https://github.com/d4l-data4life/maven-snapshots/ just run: @@ -63,7 +66,7 @@ val releaseRepoName = "maven-releases" val basePath = "${rootProject.buildDir}/gitPublish" val gitHubToken = (project.findProperty("gpr.key") - ?: System.getenv("PACKAGE_REGISTRY_TOKEN")).toString() + ?: System.getenv("PACKAGE_REGISTRY_UPLOAD_TOKEN")).toString() task("publishFeature") { diff --git a/buildSrc/src/main/kotlin/scripts/quality-spotless.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/quality-spotless.gradle.kts similarity index 98% rename from buildSrc/src/main/kotlin/scripts/quality-spotless.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/quality-spotless.gradle.kts index 4638565..d64cc28 100644 --- a/buildSrc/src/main/kotlin/scripts/quality-spotless.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/quality-spotless.gradle.kts @@ -14,7 +14,7 @@ * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result /** * You need to add following dependencies to the buildSrc/build.gradle.kts diff --git a/buildSrc/src/main/kotlin/scripts/versioning.gradle.kts b/buildSrc/src/main/kotlin/care/data4life/sdk/result/versioning.gradle.kts similarity index 99% rename from buildSrc/src/main/kotlin/scripts/versioning.gradle.kts rename to buildSrc/src/main/kotlin/care/data4life/sdk/result/versioning.gradle.kts index 16868ae..dc9be08 100644 --- a/buildSrc/src/main/kotlin/scripts/versioning.gradle.kts +++ b/buildSrc/src/main/kotlin/care/data4life/sdk/result/versioning.gradle.kts @@ -13,7 +13,7 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ -package scripts +package care.data4life.sdk.result /** * Usage: diff --git a/error/build.gradle.kts b/error/build.gradle.kts index b6c61f4..4da219c 100644 --- a/error/build.gradle.kts +++ b/error/build.gradle.kts @@ -13,15 +13,17 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +import care.data4life.sdk.result.LibraryConfig +import care.data4life.sdk.result.dependency.Dependency plugins { - kotlinMultiplatform() + id("org.jetbrains.kotlin.multiplatform") // Android - androidLibrary() + id("com.android.library") // Publish - id("scripts.publishing-config") + id("care.data4life.sdk.result.publishing-config") } group = LibraryConfig.group @@ -33,62 +35,57 @@ kotlin { jvm() - ios { - binaries { - framework { - baseName = LibraryConfig.name - } - } - } + ios {} sourceSets { val commonMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibCommon) + implementation(Dependency.multiplatform.kotlin.stdlibCommon) + implementation(Dependency.multiplatform.d4l.sdkUtil) } } val commonTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testCommon) - implementation(Dependencies.multiplatform.kotlin.testCommonAnnotations) + implementation(Dependency.multiplatform.kotlin.testCommon) + implementation(Dependency.multiplatform.kotlin.testCommonAnnotations) } } val androidMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibAndroid) + implementation(Dependency.multiplatform.kotlin.stdlibAndroid) } } val androidTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testJvm) - implementation(Dependencies.multiplatform.kotlin.testJvmJunit) + implementation(Dependency.multiplatform.kotlin.testJvm) + implementation(Dependency.multiplatform.kotlin.testJvmJunit) } } val jvmMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibJdk8) + implementation(Dependency.multiplatform.kotlin.stdlibJdk8) } } val jvmTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testJvm) - implementation(Dependencies.multiplatform.kotlin.testJvmJunit) + implementation(Dependency.multiplatform.kotlin.testJvm) + implementation(Dependency.multiplatform.kotlin.testJvmJunit) } } val iosMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibNative) + implementation(Dependency.multiplatform.kotlin.stdlibNative) } } val iosTest by getting { dependencies { dependencies { - implementation(Dependencies.multiplatform.kotlin.testCommon) - implementation(Dependencies.multiplatform.kotlin.testCommonAnnotations) + implementation(Dependency.multiplatform.kotlin.testCommon) + implementation(Dependency.multiplatform.kotlin.testCommonAnnotations) } } } diff --git a/error/src/commonMain/kotlin/care/data4life/sdk/lang/DataRestrictionException.kt b/error/src/commonMain/kotlin/care/data4life/sdk/lang/DataRestrictionException.kt new file mode 100644 index 0000000..348cb42 --- /dev/null +++ b/error/src/commonMain/kotlin/care/data4life/sdk/lang/DataRestrictionException.kt @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2021 D4L data4life gGmbH / All rights reserved. + * + * D4L owns all legal rights, title and interest in and to the Software Development Kit ("SDK"), + * including any intellectual property rights that subsist in the SDK. + * + * The SDK and its documentation may be accessed and used for viewing/review purposes only. + * Any usage of the SDK for other purposes, including usage for the development of + * applications/third-party applications shall require the conclusion of a license agreement + * between you and D4L. + * + * If you are interested in licensing the SDK for your own applications/third-party + * applications and/or if you’d like to contribute to the development of the SDK, please + * contact D4L by email to help@data4life.care. + */ + +package care.data4life.sdk.lang + +import care.data4life.sdk.config.DataRestriction.DATA_SIZE_MAX_MB + +/** + * Exception class that will be thrown in case of data restriction violations like file size is too large or + * file type is unsupported. + */ +@Deprecated(message = "This Error will move with the next release to the top level SDKs, since it is a DomainError.") +sealed class DataRestrictionException(message: String? = null, cause: Throwable? = null) : + D4LException(message, cause) { + + constructor() : this(null, null) + constructor(message: String?) : this(message, null) + constructor(cause: Throwable?) : this(cause?.toString(), cause) + + class MaxDataSizeViolation : + DataRestrictionException(message = "The file size has to be smaller or equal to ${DATA_SIZE_MAX_MB}MB!") + + class UnsupportedFileType : + DataRestrictionException(message = "Only this file types are supported: JPEG, PNG, TIFF, PDF and DCM!") +} diff --git a/flow/build.gradle.kts b/flow/build.gradle.kts index 793c3d5..2bbe8c4 100644 --- a/flow/build.gradle.kts +++ b/flow/build.gradle.kts @@ -13,15 +13,17 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +import care.data4life.sdk.result.LibraryConfig +import care.data4life.sdk.result.dependency.Dependency plugins { - kotlinMultiplatform() + id("org.jetbrains.kotlin.multiplatform") // Android - androidLibrary() + id("com.android.library") // Publish - id("scripts.publishing-config") + id("care.data4life.sdk.result.publishing-config") } group = LibraryConfig.group @@ -33,70 +35,63 @@ kotlin { jvm() - ios { - binaries { - framework { - baseName = LibraryConfig.name - } - } - } + ios {} sourceSets { val commonMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibCommon) - implementation(Dependencies.multiplatform.coroutines.common) - implementation(Dependencies.multiplatform.coroutines.stately) // TODO: Remove with Kotlin 1.5.x - implementation(Dependencies.multiplatform.d4l.sdkUtil) + implementation(Dependency.multiplatform.kotlin.stdlibCommon) + implementation(Dependency.multiplatform.coroutines.common) + implementation(Dependency.multiplatform.coroutines.stately) // TODO: Remove with Kotlin 1.5.x api(project(":error")) } } val commonTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testCommon) - implementation(Dependencies.multiplatform.kotlin.testCommonAnnotations) - implementation(Dependencies.multiplatform.d4l.sdkCoroutineTestUtil) + implementation(Dependency.multiplatform.kotlin.testCommon) + implementation(Dependency.multiplatform.kotlin.testCommonAnnotations) + implementation(Dependency.multiplatform.d4l.sdkTestUtilCoroutine) } } val androidMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibAndroid) + implementation(Dependency.multiplatform.kotlin.stdlibAndroid) } } val androidTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testJvm) - implementation(Dependencies.multiplatform.kotlin.testJvmJunit) + implementation(Dependency.multiplatform.kotlin.testJvm) + implementation(Dependency.multiplatform.kotlin.testJvmJunit) - implementation(Dependencies.android.robolectric) + implementation(Dependency.android.robolectric) } } val jvmMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibJdk8) + implementation(Dependency.multiplatform.kotlin.stdlibJdk8) } } val jvmTest by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.testJvm) - implementation(Dependencies.multiplatform.kotlin.testJvmJunit) + implementation(Dependency.multiplatform.kotlin.testJvm) + implementation(Dependency.multiplatform.kotlin.testJvmJunit) } } val iosMain by getting { dependencies { - implementation(Dependencies.multiplatform.kotlin.stdlibNative) + implementation(Dependency.multiplatform.kotlin.stdlibNative) } } val iosTest by getting { dependencies { dependencies { - implementation(Dependencies.multiplatform.kotlin.testCommon) - implementation(Dependencies.multiplatform.kotlin.testCommonAnnotations) - implementation(Dependencies.multiplatform.d4l.sdkUtil) + implementation(Dependency.multiplatform.kotlin.testCommon) + implementation(Dependency.multiplatform.kotlin.testCommonAnnotations) + implementation(Dependency.multiplatform.d4l.sdkObjcUtil) } } } diff --git a/flow/src/iosTest/kotlin/care/data4life/sdk/flow/D4lSDKFlowTest.kt b/flow/src/iosTest/kotlin/care/data4life/sdk/flow/D4lSDKFlowTest.kt index 84b0e09..99d653b 100644 --- a/flow/src/iosTest/kotlin/care/data4life/sdk/flow/D4lSDKFlowTest.kt +++ b/flow/src/iosTest/kotlin/care/data4life/sdk/flow/D4lSDKFlowTest.kt @@ -17,7 +17,7 @@ package care.data4life.sdk.flow import care.data4life.sdk.lang.PlatformError -import care.data4life.sdk.util.NSErrorFactory +import care.data4life.sdk.util.objc.NSErrorFactory import care.data4life.sdk.util.test.coroutine.runBlockingTest import co.touchlab.stately.isFrozen import kotlinx.coroutines.CoroutineScope diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8cf6eb5..7665b0f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlePlugin/result-dependency/build.gradle.kts b/gradlePlugin/result-dependency/build.gradle.kts new file mode 100644 index 0000000..37be6fb --- /dev/null +++ b/gradlePlugin/result-dependency/build.gradle.kts @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 D4L data4life gGmbH / All rights reserved. + * + * D4L owns all legal rights, title and interest in and to the Software Development Kit ("SDK"), + * including any intellectual property rights that subsist in the SDK. + * + * The SDK and its documentation may be accessed and used for viewing/review purposes only. + * Any usage of the SDK for other purposes, including usage for the development of + * applications/third-party applications shall require the conclusion of a license agreement + * between you and D4L. + * + * If you are interested in licensing the SDK for your own applications/third-party + * applications and/or if you’d like to contribute to the development of the SDK, please + * contact D4L by email to help@data4life.care. + */ + +plugins { + `kotlin-dsl` + `java-gradle-plugin` +} + +// To make it available as direct dependency +group = "care.data4life.sdk.result.dependency" +version = "1.0.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +gradlePlugin { + plugins.register("care.data4life.sdk.result.dependency") { + id = "care.data4life.sdk.result.dependency" + implementationClass = "care.data4life.sdk.result.dependency.DependencyPlugin" + } +} diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Dependency.kt similarity index 63% rename from buildSrc/src/main/kotlin/Dependencies.kt rename to gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Dependency.kt index 2ebf68c..06d9509 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Dependency.kt @@ -13,13 +13,12 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +package care.data4life.sdk.result.dependency -object Dependencies { - +object Dependency { val kotlin = Kotlin object Kotlin { const val stdLib = multiplatform.kotlin.stdlibJdk - const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}" } val multiplatform = Multiplatform @@ -27,17 +26,17 @@ object Dependencies { val kotlin = Kotlin object Kotlin { - const val stdlibCommon = "org.jetbrains.kotlin:kotlin-stdlib-common:${Versions.kotlin}" - const val stdlibJdk = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" - const val stdlibJdk8 = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlin}" - const val stdlibJs = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" - const val stdlibNative = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" - const val stdlibAndroid = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" - - const val testCommon = "org.jetbrains.kotlin:kotlin-test-common:${Versions.kotlin}" - const val testCommonAnnotations = "org.jetbrains.kotlin:kotlin-test-annotations-common:${Versions.kotlin}" - const val testJvm = "org.jetbrains.kotlin:kotlin-test:${Versions.kotlin}" - const val testJvmJunit = "org.jetbrains.kotlin:kotlin-test-junit:${Versions.kotlin}" + const val stdlibCommon = "org.jetbrains.kotlin:kotlin-stdlib-common:${Version.kotlin}" + const val stdlibJdk = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" + const val stdlibJdk8 = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Version.kotlin}" + const val stdlibJs = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" + const val stdlibNative = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" + const val stdlibAndroid = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" + + const val testCommon = "org.jetbrains.kotlin:kotlin-test-common:${Version.kotlin}" + const val testCommonAnnotations = "org.jetbrains.kotlin:kotlin-test-annotations-common:${Version.kotlin}" + const val testJvm = "org.jetbrains.kotlin:kotlin-test:${Version.kotlin}" + const val testJvmJunit = "org.jetbrains.kotlin:kotlin-test-junit:${Version.kotlin}" } val coroutines = Coroutines @@ -45,71 +44,64 @@ object Dependencies { object Coroutines { // https://github.com/Kotlin/kotlinx.coroutines const val common = - "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.kotlinCoroutines}" + "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Version.kotlinCoroutines}" const val android = - "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.kotlinCoroutines}" - const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.kotlinCoroutines}" - - const val stately = "co.touchlab:stately-common:${Versions.stately}" - } - - val ktor = Ktor + "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Version.kotlinCoroutines}" + const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Version.kotlinCoroutines}" - object Ktor { - const val common = "io.ktor:ktor-client-core:${Versions.ktor}" - const val mock = "io.ktor:ktor-client-mock:${Versions.ktor}" + const val stately = "co.touchlab:stately-common:${Version.stately}" } val d4l = D4L object D4L { - const val sdkUtil = "care.data4life.hc-util-sdk-kmp:util:${Versions.sdkUtil}" - const val sdkCoroutineTestUtil = "care.data4life.hc-util-sdk-kmp:util-coroutine-test:${Versions.sdkUtil}" + const val sdkUtil = "care.data4life.hc-util-sdk-kmp:util:${Version.sdkUtil}" + const val sdkObjcUtil = "care.data4life.hc-objc-util-sdk-kmp:objc-util:${Version.sdkObjcUtil}" + const val sdkTestUtilCoroutine = "care.data4life.hc-test-util-sdk-kmp:test-util-coroutine:${Version.sdkTestUtilCoroutine}" } } val test = Test object Test { - const val junit = "junit:junit:${Versions.testJUnit}" + const val junit = "junit:junit:${Version.testJUnit}" } val android = Android object Android { // Kotlin - const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" + const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib:${Version.kotlin}" // Android - const val desugar = "com.android.tools:desugar_jdk_libs:${Versions.androidDesugar}" + const val desugar = "com.android.tools:desugar_jdk_libs:${Version.androidDesugar}" val androidX = AndroidX object AndroidX { // AndroidX - const val ktx = "androidx.core:core-ktx:${Versions.androidXKtx}" - const val appCompat = "androidx.appcompat:appcompat:${Versions.androidXAppCompat}" - const val constraintLayout = "androidx.constraintlayout:constraintlayout:${Versions.androidXConstraintLayout}" + const val ktx = "androidx.core:core-ktx:${Version.androidXKtx}" + const val appCompat = "androidx.appcompat:appcompat:${Version.androidXAppCompat}" + const val constraintLayout = "androidx.constraintlayout:constraintlayout:${Version.androidXConstraintLayout}" } // Material - const val material = "com.google.android.material:material:${Versions.material}" + const val material = "com.google.android.material:material:${Version.material}" // Test - const val robolectric = "org.robolectric:robolectric:${Versions.robolectric}" + const val robolectric = "org.robolectric:robolectric:${Version.robolectric}" } val androidTest = AndroidTest object AndroidTest { - const val core = "androidx.test:core:${Versions.androidXTest}" - const val runner = "androidx.test:runner:${Versions.androidXTest}" - const val rules = "androidx.test:rules:${Versions.androidXTest}" + const val core = "androidx.test:core:${Version.androidXTest}" + const val runner = "androidx.test:runner:${Version.androidXTest}" + const val rules = "androidx.test:rules:${Version.androidXTest}" - const val junit = "androidx.test.ext:junit:${Versions.androidXTest}" + const val junit = "androidx.test.ext:junit:${Version.androidXTest}" - const val espressoCore = "androidx.test.espresso:espresso-core:${Versions.androidXEspresso}" + const val espressoCore = "androidx.test.espresso:espresso-core:${Version.androidXEspresso}" const val espressoIntents = - "androidx.test.espresso:espresso-intents:${Versions.androidXEspresso}" - const val espressoWeb = "androidx.test.espresso:espresso-web:${Versions.androidXEspresso}" + "androidx.test.espresso:espresso-intents:${Version.androidXEspresso}" + const val espressoWeb = "androidx.test.espresso:espresso-web:${Version.androidXEspresso}" - const val uiAutomator = - "androidx.test.uiautomator:uiautomator:${Versions.androidXUiAutomator}" + const val uiAutomator = "androidx.test.uiautomator:uiautomator:${Version.androidXUiAutomator}" } } diff --git a/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/DependencyPlugin.kt b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/DependencyPlugin.kt new file mode 100644 index 0000000..e66f2eb --- /dev/null +++ b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/DependencyPlugin.kt @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2021 D4L data4life gGmbH / All rights reserved. + * + * D4L owns all legal rights, title and interest in and to the Software Development Kit ("SDK"), + * including any intellectual property rights that subsist in the SDK. + * + * The SDK and its documentation may be accessed and used for viewing/review purposes only. + * Any usage of the SDK for other purposes, including usage for the development of + * applications/third-party applications shall require the conclusion of a license agreement + * between you and D4L. + * + * If you are interested in licensing the SDK for your own applications/third-party + * applications and/or if you’d like to contribute to the development of the SDK, please + * contact D4L by email to help@data4life.care. + */ + +package care.data4life.sdk.result.dependency + +import org.gradle.api.Plugin +import org.gradle.api.Project + +class DependencyPlugin : Plugin { + + override fun apply(target: Project) { + // nothing to do + } +} diff --git a/buildSrc/src/main/kotlin/GradlePlugins.kt b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/GradlePlugin.kt similarity index 53% rename from buildSrc/src/main/kotlin/GradlePlugins.kt rename to gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/GradlePlugin.kt index 966c16f..a63c793 100644 --- a/buildSrc/src/main/kotlin/GradlePlugins.kt +++ b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/GradlePlugin.kt @@ -13,26 +13,9 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +package care.data4life.sdk.result.dependency -import org.gradle.plugin.use.PluginDependenciesSpec -import org.gradle.plugin.use.PluginDependencySpec - -object GradlePlugins { - const val android = "com.android.tools.build:gradle:${Versions.GradlePlugins.android}" - const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.GradlePlugins.kotlin}" +object GradlePlugin { + const val android = "com.android.tools.build:gradle:${Version.GradlePlugin.android}" + const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Version.GradlePlugin.kotlin}" } - -fun PluginDependenciesSpec.kotlinMultiplatform(apply: Boolean = true): PluginDependencySpec = - id("org.jetbrains.kotlin.multiplatform").version(Versions.GradlePlugins.kotlin).apply(apply) - -fun PluginDependenciesSpec.kotlinMultiplatform(): PluginDependencySpec = - id("org.jetbrains.kotlin.multiplatform") - -fun PluginDependenciesSpec.androidApp(): PluginDependencySpec = - id("com.android.application") - -fun PluginDependenciesSpec.androidLibrary(): PluginDependencySpec = - id("com.android.library") - -fun PluginDependenciesSpec.androidKotlin(): PluginDependencySpec = - id("kotlin-android") diff --git a/buildSrc/src/main/kotlin/Repository.kt b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Repository.kt similarity index 86% rename from buildSrc/src/main/kotlin/Repository.kt rename to gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Repository.kt index d02798c..e2ca277 100644 --- a/buildSrc/src/main/kotlin/Repository.kt +++ b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Repository.kt @@ -13,6 +13,7 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +package care.data4life.sdk.result.dependency import org.gradle.api.Project import org.gradle.api.artifacts.dsl.RepositoryHandler @@ -23,12 +24,16 @@ object Repository { val github = listOf( // GitHub organization, GitHub repository name, Maven dependency group - listOf(gitHubOrgD4l, "hc-util-sdk-kmp", "care.data4life.hc-util-sdk-kmp") + listOf(gitHubOrgD4l, "hc-util-sdk-kmp", "care.data4life.hc-util-sdk-kmp"), + listOf(gitHubOrgD4l, "hc-objc-util-sdk-kmp", "care.data4life.hc-objc-util-sdk-kmp"), + listOf(gitHubOrgD4l, "hc-test-util-sdk-kmp", "care.data4life.hc-test-util-sdk-kmp") ) val d4l = listOf( // Maven dependency group - "care.data4life.hc-util-sdk-kmp" + "care.data4life.hc-util-sdk-kmp", + "care.data4life.hc-objc-util-sdk-kmp", + "care.data4life.hc-test-util-sdk-kmp" ) } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Version.kt similarity index 84% rename from buildSrc/src/main/kotlin/Versions.kt rename to gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Version.kt index e285b39..b10d5dc 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/gradlePlugin/result-dependency/src/main/kotlin/care/data4life/sdk/result/dependency/Version.kt @@ -13,11 +13,12 @@ * applications and/or if you’d like to contribute to the development of the SDK, please * contact D4L by email to help@data4life.care. */ +package care.data4life.sdk.result.dependency -object Versions { +object Version { - object GradlePlugins { - const val kotlin = Versions.kotlin + object GradlePlugin { + const val kotlin = Version.kotlin const val android = "4.2.2" } @@ -31,13 +32,15 @@ object Versions { // https://github.com/touchlab/Stately const val stately = "1.1.6" - // Network - // https://ktor.io/ - const val ktor = "1.5.4" - // D4L // https://github.com/d4l-data4life/hc-util-sdk-kmp - const val sdkUtil = "1.9.0-add-default-scope-SNAPSHOT" + const val sdkUtil = "1.10.0" + + // https://github.com/d4l-data4life/hc-objc-util-sdk-kmp + const val sdkObjcUtil = "0.1.0" + + // https://github.com/d4l-data4life/hc-test-util-sdk-kmp + const val sdkTestUtilCoroutine = "0.1.0" // Android // https://developer.android.com/studio/write/java8-support diff --git a/settings.gradle.kts b/settings.gradle.kts index 63839a1..0c43187 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,8 @@ pluginManagement { gradlePluginPortal() google() } + + includeBuild("gradlePlugin/result-dependency") } plugins {