fix: Group mount and install options into an argument group (#364)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
laur89 2025-04-21 01:18:41 +02:00 committed by GitHub
parent a0189aeaee
commit 0c53a2d1d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -115,21 +115,27 @@ internal object PatchCommand : Runnable {
this.outputFilePath = outputFilePath?.absoluteFile
}
@CommandLine.Option(
names = ["-i", "--install"],
description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."],
// Empty string to indicate that the first connected device should be used.
fallbackValue = "",
arity = "0..1",
)
private var deviceSerial: String? = null
@ArgGroup(exclusive = false, multiplicity = "0..1")
internal var installation: Installation? = null
@CommandLine.Option(
names = ["--mount"],
description = ["Install the patched APK file by mounting."],
showDefaultValue = ALWAYS,
)
private var mount: Boolean = false
internal class Installation {
@CommandLine.Option(
names = ["-i", "--install"],
required = true,
description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."],
fallbackValue = "", // Empty string is used to select the first of connected devices.
arity = "0..1",
)
internal var deviceSerial: String? = null
@CommandLine.Option(
names = ["--mount"],
required = false,
description = ["Install the patched APK file by mounting."],
showDefaultValue = ALWAYS,
)
internal var mount: Boolean = false
}
@CommandLine.Option(
names = ["--keystore"],
@ -245,11 +251,11 @@ internal object PatchCommand : Runnable {
keyStoreFilePath ?: outputFilePath.parentFile
.resolve("${outputFilePath.nameWithoutExtension}.keystore")
val installer = if (deviceSerial != null) {
val deviceSerial = deviceSerial!!.ifEmpty { null }
val installer = if (installation?.deviceSerial != null) {
val deviceSerial = installation?.deviceSerial!!.ifEmpty { null }
try {
if (mount) {
if (installation?.mount == true) {
AdbRootInstaller(deviceSerial)
} else {
AdbInstaller(deviceSerial)
@ -332,7 +338,7 @@ internal object PatchCommand : Runnable {
apk.copyTo(temporaryFilesPath.resolve(apk.name), overwrite = true).apply {
patcherResult.applyTo(this)
}.let { patchedApkFile ->
if (!mount) {
if (installation?.mount != true) {
ApkUtils.signApk(
patchedApkFile,
outputFilePath,
@ -355,7 +361,7 @@ internal object PatchCommand : Runnable {
// region Install.
deviceSerial?.let {
installation?.deviceSerial?.let {
runBlocking {
when (val result = installer!!.install(Installer.Apk(outputFilePath, packageName))) {
RootInstallerResult.FAILURE -> logger.severe("Failed to mount the patched APK file")