Skip to content

Commit 5cc0b6c

Browse files
committed
Avoid ambiguous slug handling for remove command
1 parent fffeb23 commit 5cc0b6c

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/commands/RemoveCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class RemoveCommand : CliktCommand(
2626
terminal.println("Resolving effects of removal...")
2727
val archive = Archive.terminalFromString(archiveName) ?: return@launchJob
2828

29-
val modIds = CliParser.resolveSlugs(modSlugNames) ?: return@launchJob
29+
val modIds = CliParser.resolveSlugs(modSlugNames, archive) ?: return@launchJob
3030

3131
val spinner = SpinnerAnimation()
3232
spinner.start()

pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/terminal/CliParser.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ object CliParser {
3737
class Invalid(val slug: String, val notFound: Boolean = false) : SlugResolveResult()
3838
}
3939

40-
suspend fun resolveSlugs(rawSlugs: List<String>): Set<ModId>? {
40+
suspend fun resolveSlugs(
41+
rawSlugs: List<String>,
42+
archive: Archive? = null,
43+
): Set<ModId>? {
4144
val spinner = SpinnerAnimation()
4245
spinner.start()
4346

@@ -56,7 +59,16 @@ object CliParser {
5659
} else if (ids.isEmpty()) {
5760
SlugResolveResult.Invalid(rawSlug, notFound = true)
5861
} else {
59-
SlugResolveResult.Ambiguous(ids)
62+
val modId = archive?.getInstalled()?.singleOrNull {
63+
val installedModId = it.readModId()
64+
ids.any { (_, id) -> id == installedModId }
65+
}?.readModId()
66+
67+
if (modId != null) {
68+
SlugResolveResult.Resolved(modId)
69+
} else {
70+
SlugResolveResult.Ambiguous(ids)
71+
}
6072
}
6173
}
6274
2 -> {

0 commit comments

Comments
 (0)