@@ -380,8 +380,11 @@ internal object PatchCommand : Callable<Int> {
380380 selection.filter { it.enabled != null }.associate {
381381 val enabledSelection = it.enabled!!
382382
383- (enabledSelection.selector.name ? : patchesList[enabledSelection.selector.index!! ].name!! ) to
384- enabledSelection.options
383+ val resolvedName = enabledSelection.selector.name?.let { userInput ->
384+ patchesList.firstOrNull { it.name.equals(userInput, ignoreCase = true ) }?.name ? : userInput
385+ } ? : patchesList[enabledSelection.selector.index!! ].name!!
386+
387+ resolvedName to enabledSelection.options
385388 }.let (filteredPatches::setOptions)
386389
387390 patcher + = filteredPatches
@@ -556,10 +559,7 @@ internal object PatchCommand : Callable<Int> {
556559 this @filterPatchSelection.withIndex().forEach patchLoop@{ (i, patch) ->
557560 val patchName = patch.name!!
558561
559- val isManuallyDisabled = patchName.lowercase() in disabledPatches || i in disabledPatchesByIndex
560- if (isManuallyDisabled) return @patchLoop logger.info(" \" $patchName \" disabled manually" )
561-
562- // Make sure the patch is compatible with the supplied APK files package name and version.
562+ // Check package compatibility first to avoid duplicate logs for multi-app patches.
563563 patch.compatiblePackages?.let { packages ->
564564 packages.singleOrNull { (name, _) -> name == packageName }?.let { (_, versions) ->
565565 if (versions?.isEmpty() == true ) {
@@ -587,6 +587,9 @@ internal object PatchCommand : Callable<Int> {
587587 return @let
588588 } ? : logger.fine(" \" $patchName \" has no package constraints" )
589589
590+ val isManuallyDisabled = patchName.lowercase() in disabledPatches || i in disabledPatchesByIndex
591+ if (isManuallyDisabled) return @patchLoop logger.info(" \" $patchName \" disabled manually" )
592+
590593 val isEnabled = ! exclusive && patch.use
591594 val isManuallyEnabled = patchName.lowercase() in enabledPatchesByName || i in enabledPatchesByIndex
592595
0 commit comments