From 067dcb9f43c6872dd6758c2e971fb43249d6c4dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 21:30:15 +0200 Subject: [PATCH] [Oztechan/CCC#1457] Update Oztechan/Global digest to 0d56c9a (#3990) * [Oztechan/CCC#1457] Update mokoResources to v0.24.3 (#3975) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update lifecycle to v2.8.6 (#3967) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update dependency com.lemonappdev:konsist to v0.16.1 (#3840) * [Oztechan/CCC#1457] Update dependency com.lemonappdev:konsist to v0.16.1 Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update dependency com.lemonappdev:konsist to v0.16.1 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update koin to v4 (major) (#3956) * [Oztechan/CCC#1457] Update koin to v4 Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update koin to v4 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update navigation to v2.8.1 (#3968) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update dependency com.russhwolf:multiplatform-settings to v1.2.0 (#3849) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update submodule/basemob digest to 530a6b0 (#3977) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update dependency com.huawei.hms:ads-prime to v3.4.74.302 (#3974) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#3979] Open 80 port for backend app (#3981) * [Oztechan/CCC#3979] Open 80 port for backend app * [Oztechan/CCC#3979] Open 80 port for backend app * [Oztechan/CCC#3980] Remove suspends from ktor methods (#3982) * [Oztechan/CCC#3983] Get rid of unsafe version read (#3984) * [Oztechan/CCC#1457] Update actions/checkout action to v4.2.0 (#3978) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update submodule/logmob digest to 1cb3e43 (#3986) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#3985] Refactor Routes with non returning methods (#3989) * [Oztechan/CCC#3985] Refactor Routes with non returning methods * [Oztechan/CCC#3985] Refactor Routes with non returning methods * [Oztechan/CCC#1457] Update dependency ubuntu to v24 (#3988) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan * [Oztechan/CCC#1457] Update Oztechan/Global digest to 0d56c9a Co-authored-by: Mustafa Ozhan --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Mustafa Ozhan --- .github/workflows/build.yml | 4 ++-- .github/workflows/main.yml | 24 +++++++++---------- .github/workflows/project.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/release.yml | 16 ++++++------- .../ccc/backend/app/routes/CurrencyRoute.kt | 20 +++++++++------- .../ccc/backend/app/routes/ErrorRoute.kt | 20 +++++++++------- .../ccc/backend/app/routes/RootRoute.kt | 20 +++++++++------- .../ccc/backend/app/routes/VersionRoute.kt | 16 +++++++------ .../app/src/main/resources/application.conf | 4 ++-- .../di/ViewModelDefinition.android.kt | 2 +- gradle/libs.versions.toml | 20 ++++++++-------- submodule/basemob | 2 +- submodule/logmob | 2 +- .../com/oztechan/ccc/test/ConventionTest.kt | 7 +++--- 15 files changed, 84 insertions(+), 77 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d94254afb5..cb5b1b985c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -84,7 +84,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT Notify: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ Build ] if: always() steps: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b7cea17ef4..da3dfae82d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -70,7 +70,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -106,7 +106,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT DistributeAndroid: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GradleBuild ] if: github.event_name == 'push' || github.event_name == 'schedule' outputs: @@ -114,7 +114,7 @@ jobs: steps: - name: Clone Repo # Needed for reading commit message for Firebase App Distribution - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v4.2.0 - name: Download Android ${{ env.BUILD_TYPE }} Artifacts uses: actions/download-artifact@v4.1.8 @@ -153,7 +153,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -199,14 +199,14 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT DistributeIOS: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ XCodeBuild ] if: github.event_name == 'push' || github.event_name == 'schedule' outputs: status: ${{ steps.status.outputs.status }} steps: - name: Clone Repo - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v4.2.0 - name: Download iOS ${{ env.BUILD_TYPE }} Artifacts uses: actions/download-artifact@v4.1.8 @@ -237,7 +237,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Test run: ./gradlew test @@ -251,13 +251,13 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT Coverage: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: status: ${{ steps.status.outputs.status }} steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Generate Coverage run: ./gradlew koverXmlReport @@ -294,13 +294,13 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT CodeAnalysis: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: status: ${{ steps.status.outputs.status }} steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Detekt & Lint run: ./gradlew detektAll lint @@ -321,7 +321,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT Notify: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GradleBuild, XCodeBuild, Test, Coverage, CodeAnalysis, DistributeAndroid, DistributeIOS ] if: always() steps: diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 637988e1b0..517a9429b8 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -14,7 +14,7 @@ on: jobs: ProjectAutomations: - uses: Oztechan/Global/.github/workflows/reusable-project.yml@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/.github/workflows/reusable-project.yml@0d56c9a53517f938b3f5183670fb5ed49a890ee7 with: project_id: 2 secrets: inherit diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index daa68255cd..08e33fe312 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,7 +8,7 @@ on: jobs: PublishRelease: - uses: Oztechan/Global/.github/workflows/reusable-publish.yml@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/.github/workflows/reusable-publish.yml@0d56c9a53517f938b3f5183670fb5ed49a890ee7 with: slack_channel: "ccc-github" secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 64de6b2da9..d3ac741b68 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,13 +55,13 @@ env: jobs: GenerateGradleArtifacts: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: status: ${{ steps.status.outputs.status }} steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -102,14 +102,14 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT UploadToGooglePlay: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GenerateGradleArtifacts ] outputs: status: ${{ steps.status.outputs.status }} steps: - name: Clone Repo - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v4.2.0 - name: Download App Bundle uses: actions/download-artifact@v4.1.8 @@ -148,7 +148,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT UploadToHuaweiAppGallery: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GenerateGradleArtifacts ] outputs: status: ${{ steps.status.outputs.status }} @@ -179,7 +179,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT DeployToServer: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GenerateGradleArtifacts ] outputs: status: ${{ steps.status.outputs.status }} @@ -215,7 +215,7 @@ jobs: status: ${{ steps.status.outputs.status }} steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88 + uses: Oztechan/Global/actions/setup-gradle-repo@0d56c9a53517f938b3f5183670fb5ed49a890ee7 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -239,7 +239,7 @@ jobs: run: echo "status=success" >> $GITHUB_OUTPUT Notify: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ GenerateGradleArtifacts, UploadToGooglePlay, UploadToHuaweiAppGallery, DeployToServer, UploadToAppStore ] if: always() steps: diff --git a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/CurrencyRoute.kt b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/CurrencyRoute.kt index 6e5ac26133..283b2f06d9 100644 --- a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/CurrencyRoute.kt +++ b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/CurrencyRoute.kt @@ -15,16 +15,18 @@ import io.ktor.server.routing.get private const val PATH_BY_BASE = "/currency/byBase/" private const val PARAMETER_BASE = "base" -internal suspend fun Route.getCurrencyByName( +internal fun Route.getCurrencyByName( apiController: APIController -) = get(PATH_BY_BASE) { - Logger.v { "GET Request $PATH_BY_BASE" } +) { + get(PATH_BY_BASE) { + Logger.v { "GET Request $PATH_BY_BASE" } - call.parameters[PARAMETER_BASE]?.let { base -> - Logger.v { "Parameter: $PARAMETER_BASE $base" } + call.parameters[PARAMETER_BASE]?.let { base -> + Logger.v { "Parameter: $PARAMETER_BASE $base" } - apiController.getExchangeRateByBase(base) - ?.let { call.respond(HttpStatusCode.OK, it) } - ?: call.respond(HttpStatusCode.NotFound) - } ?: call.respond(HttpStatusCode.BadRequest) + apiController.getExchangeRateByBase(base) + ?.let { call.respond(HttpStatusCode.OK, it) } + ?: call.respond(HttpStatusCode.NotFound) + } ?: call.respond(HttpStatusCode.BadRequest) + } } diff --git a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/ErrorRoute.kt b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/ErrorRoute.kt index 5c733ccc84..4a769ff5c5 100644 --- a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/ErrorRoute.kt +++ b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/ErrorRoute.kt @@ -16,14 +16,16 @@ import io.ktor.server.routing.get private const val PATH_ERROR = "/error" private const val ERROR_HTML = "error.html" -internal suspend fun Route.getError() = get(PATH_ERROR) { - Logger.v { "GET Request $PATH_ERROR" } +internal fun Route.getError() { + get(PATH_ERROR) { + Logger.v { "GET Request $PATH_ERROR" } - javaClass.classLoader?.getResource(ERROR_HTML)?.readText()?.let { resource -> - call.respondText( - text = resource, - contentType = ContentType.Text.Html, - status = HttpStatusCode.OK - ) - } ?: call.respond(HttpStatusCode.NotFound) + javaClass.classLoader?.getResource(ERROR_HTML)?.readText()?.let { resource -> + call.respondText( + text = resource, + contentType = ContentType.Text.Html, + status = HttpStatusCode.OK + ) + } ?: call.respond(HttpStatusCode.NotFound) + } } diff --git a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/RootRoute.kt b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/RootRoute.kt index 7d36d87bfc..90e6834d47 100644 --- a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/RootRoute.kt +++ b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/RootRoute.kt @@ -16,14 +16,16 @@ import io.ktor.server.routing.get private const val PATH_ROOT = "/" private const val INDEX_HTML = "index.html" -internal suspend fun Route.getRoot() = get(PATH_ROOT) { - Logger.v { "GET Request $PATH_ROOT" } +internal fun Route.getRoot() { + get(PATH_ROOT) { + Logger.v { "GET Request $PATH_ROOT" } - javaClass.classLoader?.getResource(INDEX_HTML)?.readText()?.let { resource -> - call.respondText( - text = resource, - contentType = ContentType.Text.Html, - status = HttpStatusCode.OK - ) - } ?: call.respond(HttpStatusCode.NotFound) + javaClass.classLoader?.getResource(INDEX_HTML)?.readText()?.let { resource -> + call.respondText( + text = resource, + contentType = ContentType.Text.Html, + status = HttpStatusCode.OK + ) + } ?: call.respond(HttpStatusCode.NotFound) + } } diff --git a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/VersionRoute.kt b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/VersionRoute.kt index df62b6c574..b6e6e648a5 100644 --- a/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/VersionRoute.kt +++ b/backend/app/src/main/kotlin/com/oztechan/ccc/backend/app/routes/VersionRoute.kt @@ -10,12 +10,14 @@ import io.ktor.server.routing.get private const val PATH_VERSION = "/version" -internal suspend fun Route.getVersion() = get(PATH_VERSION) { - Logger.v { "GET Request $PATH_VERSION" } +internal fun Route.getVersion() { + get(PATH_VERSION) { + Logger.v { "GET Request $PATH_VERSION" } - call.respondText( - text = "Version: ${javaClass.`package`.implementationVersion}", - contentType = ContentType.Text.Plain, - status = HttpStatusCode.OK - ) + call.respondText( + text = "Version: ${javaClass.`package`?.implementationVersion}", + contentType = ContentType.Text.Plain, + status = HttpStatusCode.OK + ) + } } diff --git a/backend/app/src/main/resources/application.conf b/backend/app/src/main/resources/application.conf index 1e1f1dbc15..36ef656afd 100644 --- a/backend/app/src/main/resources/application.conf +++ b/backend/app/src/main/resources/application.conf @@ -1,7 +1,7 @@ ktor { deployment { - port = 8080 - port = ${?PORT} + port = 8080 ; TODO can be removed when enough amount of users are using the 80 port + port = 80 } application { modules = [ diff --git a/client/core/viewmodel/src/androidMain/kotlin/com/oztechan/ccc/client/core/viewmodel/di/ViewModelDefinition.android.kt b/client/core/viewmodel/src/androidMain/kotlin/com/oztechan/ccc/client/core/viewmodel/di/ViewModelDefinition.android.kt index ab86d466d1..ef6a41b02e 100644 --- a/client/core/viewmodel/src/androidMain/kotlin/com/oztechan/ccc/client/core/viewmodel/di/ViewModelDefinition.android.kt +++ b/client/core/viewmodel/src/androidMain/kotlin/com/oztechan/ccc/client/core/viewmodel/di/ViewModelDefinition.android.kt @@ -1,10 +1,10 @@ package com.oztechan.ccc.client.core.viewmodel.di import com.oztechan.ccc.client.core.viewmodel.BaseViewModel -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.definition.Definition import org.koin.core.definition.KoinDefinition import org.koin.core.module.Module +import org.koin.core.module.dsl.viewModel import org.koin.core.qualifier.Qualifier actual inline fun Module.viewModelDefinition( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a95195a18f..4b5891b565 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,12 +11,12 @@ detekt = "1.23.7" androidDesugaring = "2.1.2" androidMaterial = "1.12.0" constraintLayout = "2.1.4" -koinCore = "3.5.6" -koinCompose = "3.5.6" -koinAndroid = "3.5.6" -koinKtor = "3.5.6" +koinCore = "4.0.0" +koinCompose = "4.0.0" +koinAndroid = "4.0.0" +koinKtor = "4.0.0" ktor = "2.3.12" -multiplatformSettings = "1.1.1" +multiplatformSettings = "1.2.0" firebaseAnalytics = "22.1.0" firebaseRemoteConfig = "22.0.0" googleServices = "4.4.2" @@ -25,24 +25,24 @@ firebasePerPlugin = "1.4.2" firebaseCrashlyticsPlugin = "3.0.2" googleAds = "23.3.0" googleUmp = "3.0.0" -huaweiAds = "3.4.74.300" +huaweiAds = "3.4.74.302" huaweiOsm = "1.3.35" -navigation = "2.8.0" +navigation = "2.8.1" playCoreReview = "2.0.1" kotlinXDateTime = "0.6.1" coroutines = "1.9.0" billing = "7.0.0" leakCanary = "2.14" sqlDelight = "1.5.5" -lifecycle = "2.8.5" -mokoResources = "0.24.2" +lifecycle = "2.8.6" +mokoResources = "0.24.3" buildKonfig = "0.15.2" splashScreen = "1.0.1" kover = "0.8.3" rootBeer = "0.1.1" anrWatchDog = "1.4.0" kermit = "2.0.4" -konsist = "0.15.1" +konsist = "0.16.1" [libraries] # COMMON diff --git a/submodule/basemob b/submodule/basemob index eea72d106e..530a6b0a32 160000 --- a/submodule/basemob +++ b/submodule/basemob @@ -1 +1 @@ -Subproject commit eea72d106e0d2cd18948d59ca52972af591d35dc +Subproject commit 530a6b0a3223aa74a45e5d75b53af2b3c9e4aac3 diff --git a/submodule/logmob b/submodule/logmob index a7b5272130..1cb3e43ddc 160000 --- a/submodule/logmob +++ b/submodule/logmob @@ -1 +1 @@ -Subproject commit a7b527213022dfc8e99417142e7d929a7d9ac43c +Subproject commit 1cb3e43ddcfc670101dc8ce1d880dc2e09e91337 diff --git a/test/src/test/kotlin/com/oztechan/ccc/test/ConventionTest.kt b/test/src/test/kotlin/com/oztechan/ccc/test/ConventionTest.kt index 0bc328f821..6b5456edbd 100644 --- a/test/src/test/kotlin/com/oztechan/ccc/test/ConventionTest.kt +++ b/test/src/test/kotlin/com/oztechan/ccc/test/ConventionTest.kt @@ -96,13 +96,12 @@ internal class ConventionTest { .files .assertTrue { it.moduleName.replace("/", ".").let { modulePackaging -> - println( - it.moduleName + "==" + it.name + "==" + it.packagee?.fullyQualifiedName + "==" + modulePackaging - ) + println("${it.moduleName}==${it.name}==${it.packagee?.name}==$modulePackaging") + if (modulePackaging.contains("submodule")) { true } else { - it.packagee?.fullyQualifiedName?.startsWith("com.oztechan.ccc.$modulePackaging") + it.packagee?.name?.startsWith("com.oztechan.ccc.$modulePackaging") } } }