--- a/core/build.gradle.kts Tue Apr 22 14:19:23 2025 -0400
+++ b/core/build.gradle.kts Tue Apr 22 14:35:57 2025 -0400
@@ -54,8 +54,8 @@
sourceSets {
commonMain.dependencies {
- implementation(libs.okio)
- implementation(libs.kotlinx.coroutines)
+ api(libs.okio)
+ api(libs.kotlinx.coroutines)
implementation(libs.kotlinx.serialization.json)
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/src/androidMain/kotlin/com/geekorum/aboutoss/core/gms/GmsLicenseInfoRepository.kt Tue Apr 22 14:35:57 2025 -0400
@@ -0,0 +1,69 @@
+/*
+ * AboutOss is an utility library to retrieve and display
+ * opensource licenses in Android applications.
+ *
+ * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
+ *
+ * This file is part of AboutOss.
+ *
+ * AboutOss is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AboutOss is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.geekorum.aboutoss.core.gms
+
+import android.content.Context
+import com.geekorum.aboutoss.core.LicenseInfoRepository
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.withContext
+import okio.source
+
+/**
+ * Retrieve License information stored in application resources
+ */
+class GmsLicenseInfoRepository(
+ private val appContext: Context,
+ private val mainCoroutineDispatcher: CoroutineDispatcher,
+ private val ioCoroutineDispatcher: CoroutineDispatcher,
+ private val thirdPartyLicensesResourceName: String = "third_party_licenses",
+ private val thirdPartyLicenseMetadataResourceName: String = "third_party_license_metadata"
+) : LicenseInfoRepository {
+
+ private var licensesInfo: Map<String, String>? = null
+
+ override suspend fun getLicensesInfo(): Map<String, String> = withContext(mainCoroutineDispatcher) {
+ parseLicenses()
+ checkNotNull(licensesInfo)
+ }
+
+ override suspend fun getLicenseFor(dependency: String): String = withContext(mainCoroutineDispatcher) {
+ parseLicenses()
+ checkNotNull(licensesInfo).let {
+ return@withContext it[dependency] ?: error("Dependency not found")
+ }
+ }
+
+ private suspend fun parseLicenses() = withContext(mainCoroutineDispatcher) {
+ if (licensesInfo == null) {
+ val licenses = withContext(ioCoroutineDispatcher) {
+ val parser = OssLicenseParser(
+ thirdPartyLicensesSource = OssLicenseParser.openRawResourcesByName(appContext, thirdPartyLicensesResourceName).source(),
+ thirdPartyLicensesMetadataSource = OssLicenseParser.openRawResourcesByName(appContext, thirdPartyLicenseMetadataResourceName).source()
+ )
+ parser.use {
+ it.parseLicenses()
+ }
+ }
+ licensesInfo = licenses
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/src/androidMain/kotlin/com/geekorum/aboutoss/core/gms/OssLicenseParserExt.kt Tue Apr 22 14:35:57 2025 -0400
@@ -0,0 +1,43 @@
+/*
+ * AboutOss is an utility library to retrieve and display
+ * opensource licenses in Android applications.
+ *
+ * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
+ *
+ * This file is part of AboutOss.
+ *
+ * AboutOss is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AboutOss is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.geekorum.aboutoss.core.gms
+
+import android.annotation.SuppressLint
+import android.content.Context
+import java.io.InputStream
+
+@SuppressLint("DiscouragedApi")
+fun OssLicenseParser.Companion.openDefaultThirdPartyLicenses(context: Context): InputStream {
+ return openRawResourcesByName(context, "third_party_licenses")
+}
+
+@SuppressLint("DiscouragedApi")
+fun OssLicenseParser.Companion.openDefaultThirdPartyLicensesMetadata(context: Context): InputStream {
+ return openRawResourcesByName(context, "third_party_license_metadata")
+}
+
+@SuppressLint("DiscouragedApi")
+fun OssLicenseParser.Companion.openRawResourcesByName(context: Context, name: String): InputStream {
+ val resourceId = context.resources.getIdentifier(name, "raw", context.packageName)
+ check(resourceId != 0) { "$name was not found in resources raw of ${context.packageName}"}
+ return context.resources.openRawResource(resourceId)
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/src/androidMain/kotlin/com/geekorum/aboutoss/core/licensee/LicenseeLicenseInfoRepository.android.kt Tue Apr 22 14:35:57 2025 -0400
@@ -0,0 +1,42 @@
+/*
+ * AboutOss is an utility library to retrieve and display
+ * opensource licenses in Android applications.
+ *
+ * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
+ *
+ * This file is part of AboutOss.
+ *
+ * AboutOss is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AboutOss is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.geekorum.aboutoss.core.licensee
+
+import android.content.res.AssetManager
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Dispatchers
+import okio.source
+
+fun LicenseeLicenseInfoRepository(
+ assetManager: AssetManager,
+ licenseeAssetsPath: String = "app/cash/licensee/artifacts.json",
+ mainCoroutineDispatcher: CoroutineDispatcher = Dispatchers.Main,
+ ioCoroutineDispatcher: CoroutineDispatcher = Dispatchers.IO,
+): LicenseeLicenseInfoRepository {
+ return LicenseeLicenseInfoRepository(
+ produceInput = {
+ assetManager.open(licenseeAssetsPath).source()
+ },
+ mainCoroutineDispatcher = mainCoroutineDispatcher,
+ ioCoroutineDispatcher = ioCoroutineDispatcher
+ )
+}
--- a/core/src/main/java/com/geekorum/aboutoss/core/gms/GmsLicenseInfoRepository.kt Tue Apr 22 14:19:23 2025 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * AboutOss is an utility library to retrieve and display
- * opensource licenses in Android applications.
- *
- * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
- *
- * This file is part of AboutOss.
- *
- * AboutOss is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AboutOss is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
- */
-package com.geekorum.aboutoss.core.gms
-
-import android.content.Context
-import com.geekorum.aboutoss.core.LicenseInfoRepository
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.withContext
-import okio.source
-
-/**
- * Retrieve License information stored in application resources
- */
-class GmsLicenseInfoRepository(
- private val appContext: Context,
- private val mainCoroutineDispatcher: CoroutineDispatcher,
- private val ioCoroutineDispatcher: CoroutineDispatcher,
- private val thirdPartyLicensesResourceName: String = "third_party_licenses",
- private val thirdPartyLicenseMetadataResourceName: String = "third_party_license_metadata"
-) : LicenseInfoRepository {
-
- private var licensesInfo: Map<String, String>? = null
-
- override suspend fun getLicensesInfo(): Map<String, String> = withContext(mainCoroutineDispatcher) {
- parseLicenses()
- checkNotNull(licensesInfo)
- }
-
- override suspend fun getLicenseFor(dependency: String): String = withContext(mainCoroutineDispatcher) {
- parseLicenses()
- checkNotNull(licensesInfo).let {
- return@withContext it[dependency] ?: error("Dependency not found")
- }
- }
-
- private suspend fun parseLicenses() = withContext(mainCoroutineDispatcher) {
- if (licensesInfo == null) {
- val licenses = withContext(ioCoroutineDispatcher) {
- val parser = OssLicenseParser(
- thirdPartyLicensesSource = OssLicenseParser.openRawResourcesByName(appContext, thirdPartyLicensesResourceName).source(),
- thirdPartyLicensesMetadataSource = OssLicenseParser.openRawResourcesByName(appContext, thirdPartyLicenseMetadataResourceName).source()
- )
- parser.use {
- it.parseLicenses()
- }
- }
- licensesInfo = licenses
- }
- }
-}
\ No newline at end of file
--- a/core/src/main/java/com/geekorum/aboutoss/core/gms/OssLicenseParserExt.kt Tue Apr 22 14:19:23 2025 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * AboutOss is an utility library to retrieve and display
- * opensource licenses in Android applications.
- *
- * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
- *
- * This file is part of AboutOss.
- *
- * AboutOss is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AboutOss is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
- */
-package com.geekorum.aboutoss.core.gms
-
-import android.annotation.SuppressLint
-import android.content.Context
-import java.io.InputStream
-
-@SuppressLint("DiscouragedApi")
-fun OssLicenseParser.Companion.openDefaultThirdPartyLicenses(context: Context): InputStream {
- return openRawResourcesByName(context, "third_party_licenses")
-}
-
-@SuppressLint("DiscouragedApi")
-fun OssLicenseParser.Companion.openDefaultThirdPartyLicensesMetadata(context: Context): InputStream {
- return openRawResourcesByName(context, "third_party_license_metadata")
-}
-
-@SuppressLint("DiscouragedApi")
-fun OssLicenseParser.Companion.openRawResourcesByName(context: Context, name: String): InputStream {
- val resourceId = context.resources.getIdentifier(name, "raw", context.packageName)
- check(resourceId != 0) { "$name was not found in resources raw of ${context.packageName}"}
- return context.resources.openRawResource(resourceId)
-}
--- a/core/src/main/java/com/geekorum/aboutoss/core/licensee/LicenseeLicenseInfoRepository.android.kt Tue Apr 22 14:19:23 2025 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * AboutOss is an utility library to retrieve and display
- * opensource licenses in Android applications.
- *
- * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
- *
- * This file is part of AboutOss.
- *
- * AboutOss is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AboutOss is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with AboutOss. If not, see <http://www.gnu.org/licenses/>.
- */
-package com.geekorum.aboutoss.core.licensee
-
-import android.content.res.AssetManager
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.Dispatchers
-import okio.source
-
-fun LicenseeLicenseInfoRepository(
- assetManager: AssetManager,
- licenseeAssetsPath: String = "app/cash/licensee/artifacts.json",
- mainCoroutineDispatcher: CoroutineDispatcher = Dispatchers.Main,
- ioCoroutineDispatcher: CoroutineDispatcher = Dispatchers.IO,
-): LicenseeLicenseInfoRepository {
- return LicenseeLicenseInfoRepository(
- produceInput = {
- assetManager.open(licenseeAssetsPath).source()
- },
- mainCoroutineDispatcher = mainCoroutineDispatcher,
- ioCoroutineDispatcher = ioCoroutineDispatcher
- )
-}