refactor: Simplify replacement logic

This commit is contained in:
oSumAtrIX 2023-09-19 05:08:00 +02:00
parent 3e13fb5d56
commit e3851d58c8
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4

View File

@ -15,6 +15,7 @@ import app.revanced.lib.adb.Constants.RESTART
import app.revanced.lib.adb.Constants.TMP_PATH import app.revanced.lib.adb.Constants.TMP_PATH
import app.revanced.lib.adb.Constants.UMOUNT import app.revanced.lib.adb.Constants.UMOUNT
import se.vidstige.jadb.JadbConnection import se.vidstige.jadb.JadbConnection
import se.vidstige.jadb.JadbDevice
import se.vidstige.jadb.managers.Package import se.vidstige.jadb.managers.Package
import se.vidstige.jadb.managers.PackageManager import se.vidstige.jadb.managers.PackageManager
import java.io.File import java.io.File
@ -74,27 +75,25 @@ sealed class AdbManager private constructor(deviceSerial: String? = null) {
override fun install(apk: Apk) { override fun install(apk: Apk) {
logger.info("Installing by mounting") logger.info("Installing by mounting")
val applyReplacement = getPlaceholderReplacement( val packageName = apk.packageName ?: throw PackageNameRequiredException()
apk.packageName ?: throw PackageNameRequiredException()
)
device.run(RESOLVE_ACTIVITY.applyReplacement()).inputStream.bufferedReader().readLine().let { line -> device.run(RESOLVE_ACTIVITY, packageName).inputStream.bufferedReader().readLine().let { line ->
if (line != "No activity found") return@let if (line != "No activity found") return@let
throw throw FailedToFindInstalledPackageException(apk.packageName) throw throw FailedToFindInstalledPackageException(packageName)
} }
device.push(apk.file, TMP_PATH) device.push(apk.file, TMP_PATH)
device.run("$CREATE_DIR $INSTALLATION_PATH") device.run("$CREATE_DIR $INSTALLATION_PATH")
device.run(INSTALL_PATCHED_APK.applyReplacement()) device.run(INSTALL_PATCHED_APK, packageName)
device.createFile(TMP_PATH, MOUNT_SCRIPT.applyReplacement()) device.createFile(TMP_PATH, MOUNT_SCRIPT.applyReplacement(packageName))
device.run(INSTALL_MOUNT.applyReplacement()) device.run(INSTALL_MOUNT, packageName)
device.run(UMOUNT.applyReplacement()) // Sanity check. device.run(UMOUNT, packageName) // Sanity check.
device.run(MOUNT_PATH.applyReplacement()) device.run(MOUNT_PATH, packageName)
device.run(RESTART.applyReplacement()) device.run(RESTART, packageName)
device.run(DELETE.applyReplacement(TMP_PATH).applyReplacement()) device.run(DELETE, TMP_PATH)
super.install(apk) super.install(apk)
} }
@ -102,18 +101,16 @@ sealed class AdbManager private constructor(deviceSerial: String? = null) {
override fun uninstall(packageName: String) { override fun uninstall(packageName: String) {
logger.info("Uninstalling $packageName by unmounting") logger.info("Uninstalling $packageName by unmounting")
val applyReplacement = getPlaceholderReplacement(packageName) device.run(UMOUNT, packageName)
device.run(DELETE.applyReplacement(PATCHED_APK_PATH), packageName)
device.run(UMOUNT.applyReplacement(packageName)) device.run(DELETE, MOUNT_PATH)
device.run(DELETE.applyReplacement(PATCHED_APK_PATH).applyReplacement()) device.run(DELETE, TMP_PATH)
device.run(DELETE.applyReplacement(MOUNT_PATH).applyReplacement())
device.run(DELETE.applyReplacement(TMP_PATH).applyReplacement())
super.uninstall(packageName) super.uninstall(packageName)
} }
companion object Utils { companion object Utils {
private fun getPlaceholderReplacement(with: String): String.() -> String = { replace(PLACEHOLDER, with) } private fun JadbDevice.run(command: String, with: String) = run(command.applyReplacement(with))
private fun String.applyReplacement(with: String) = replace(PLACEHOLDER, with) private fun String.applyReplacement(with: String) = replace(PLACEHOLDER, with)
} }
} }