mirror of
https://github.com/tachiyomiorg/tachiyomi-extensions-inspector.git
synced 2024-12-26 16:51:50 +01:00
Minor cleanup
This commit is contained in:
parent
20895f2ef6
commit
52641de2b7
@ -1,64 +0,0 @@
|
|||||||
package suwayomi.tachidesk
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) Contributors to the Suwayomi project
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
import kotlinx.serialization.encodeToString
|
|
||||||
import kotlinx.serialization.json.Json
|
|
||||||
import mu.KotlinLogging
|
|
||||||
import suwayomi.tachidesk.manga.impl.extension.Extension.installAPK
|
|
||||||
import java.io.File
|
|
||||||
import java.nio.file.Files
|
|
||||||
import java.nio.file.Paths
|
|
||||||
import kotlin.io.path.extension
|
|
||||||
import kotlin.streams.toList
|
|
||||||
|
|
||||||
object InspectorMain {
|
|
||||||
|
|
||||||
private val logger = KotlinLogging.logger {}
|
|
||||||
|
|
||||||
suspend fun inspectorMain(args: Array<String>) {
|
|
||||||
if (args.size < 3) {
|
|
||||||
throw RuntimeException("Inspector must be given the path of apks directory, output json, and a tmp dir")
|
|
||||||
}
|
|
||||||
|
|
||||||
val apksPath = args[0]
|
|
||||||
val outputPath = args[1]
|
|
||||||
val tmpDirPath = args[2]
|
|
||||||
|
|
||||||
val tmpDir = File(tmpDirPath, "tmp").also { it.mkdir() }
|
|
||||||
val extensions = Files.find(Paths.get(apksPath), 2, { _, fileAttributes -> fileAttributes.isRegularFile })
|
|
||||||
.filter { it.extension == "apk" }
|
|
||||||
.toList()
|
|
||||||
.map {
|
|
||||||
logger.info("Installing $it")
|
|
||||||
val (pkgName, sources) = installAPK(tmpDir) { it.toFile() }
|
|
||||||
pkgName to sources.map { source -> SourceJson(source) }
|
|
||||||
}
|
|
||||||
.toMap()
|
|
||||||
|
|
||||||
File(outputPath).writeText(Json.encodeToString(extensions))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class SourceJson(
|
|
||||||
val name: String,
|
|
||||||
val lang: String,
|
|
||||||
val id: String,
|
|
||||||
val baseUrl: String
|
|
||||||
) {
|
|
||||||
constructor(source: HttpSource) :
|
|
||||||
this(
|
|
||||||
source.name,
|
|
||||||
source.lang,
|
|
||||||
source.id.toString(),
|
|
||||||
source.baseUrl
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,12 +5,63 @@ package suwayomi.tachidesk
|
|||||||
*
|
*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
import suwayomi.tachidesk.InspectorMain.inspectorMain
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.encodeToString
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
|
import mu.KotlinLogging
|
||||||
|
import suwayomi.tachidesk.manga.impl.extension.Extension
|
||||||
import suwayomi.tachidesk.server.applicationSetup
|
import suwayomi.tachidesk.server.applicationSetup
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
import java.nio.file.Paths
|
||||||
|
import kotlin.io.path.extension
|
||||||
|
import kotlin.streams.toList
|
||||||
|
|
||||||
|
private val logger = KotlinLogging.logger {}
|
||||||
|
|
||||||
suspend fun main(args: Array<String>) {
|
suspend fun main(args: Array<String>) {
|
||||||
applicationSetup()
|
if (args.size < 3) {
|
||||||
inspectorMain(args)
|
throw RuntimeException("Inspector must be given the path of apks directory, output json, and a tmp dir")
|
||||||
|
}
|
||||||
|
|
||||||
|
applicationSetup()
|
||||||
|
|
||||||
|
val (apksPath, outputPath, tmpDirPath) = args
|
||||||
|
|
||||||
|
val tmpDir = File(tmpDirPath, "tmp").also { it.mkdir() }
|
||||||
|
val extensions = Files.find(Paths.get(apksPath), 2, { _, fileAttributes -> fileAttributes.isRegularFile })
|
||||||
|
.filter { it.extension == "apk" }
|
||||||
|
.toList()
|
||||||
|
|
||||||
|
logger.info("Found ${extensions.size} extensions")
|
||||||
|
|
||||||
|
val extensionsInfo = extensions
|
||||||
|
.map {
|
||||||
|
logger.debug("Installing $it")
|
||||||
|
val (pkgName, sources) = Extension.installAPK(tmpDir) { it.toFile() }
|
||||||
|
pkgName to sources.map { source -> SourceJson(source) }
|
||||||
|
}
|
||||||
|
.toMap()
|
||||||
|
|
||||||
|
File(outputPath).writeText(Json.encodeToString(extensionsInfo))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class SourceJson(
|
||||||
|
val name: String,
|
||||||
|
val lang: String,
|
||||||
|
val id: String,
|
||||||
|
val baseUrl: String
|
||||||
|
) {
|
||||||
|
constructor(source: HttpSource) :
|
||||||
|
this(
|
||||||
|
source.name,
|
||||||
|
source.lang,
|
||||||
|
source.id.toString(),
|
||||||
|
source.baseUrl
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -43,15 +43,6 @@ object Extension {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*val signatureHash = getSignatureHash(packageInfo)
|
|
||||||
|
|
||||||
if (signatureHash == null) {
|
|
||||||
throw Exception("Package $pkgName isn't signed")
|
|
||||||
} else if (signatureHash !in trustedSignatures) {
|
|
||||||
// TODO: allow trusting keys
|
|
||||||
throw Exception("This apk is not a signed with the official tachiyomi signature")
|
|
||||||
}*/
|
|
||||||
|
|
||||||
val className = packageInfo.packageName + packageInfo.applicationInfo.metaData.getString(METADATA_SOURCE_CLASS)
|
val className = packageInfo.packageName + packageInfo.applicationInfo.metaData.getString(METADATA_SOURCE_CLASS)
|
||||||
|
|
||||||
logger.trace("Main class for extension is $className")
|
logger.trace("Main class for extension is $className")
|
||||||
|
@ -5,7 +5,8 @@ package suwayomi.tachidesk.server
|
|||||||
*
|
*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
|
Loading…
Reference in New Issue
Block a user