diff --git a/pacmc-app/src/commonMain/kotlin/net/axay/pacmc/app/repoapi/RepositoryApi.kt b/pacmc-app/src/commonMain/kotlin/net/axay/pacmc/app/repoapi/RepositoryApi.kt index 1d4bab1..3d8518e 100644 --- a/pacmc-app/src/commonMain/kotlin/net/axay/pacmc/app/repoapi/RepositoryApi.kt +++ b/pacmc-app/src/commonMain/kotlin/net/axay/pacmc/app/repoapi/RepositoryApi.kt @@ -54,20 +54,21 @@ object RepositoryApi { private val curseforgeApi = CurseforgeApi(ktorClient, ktorClientJson, cache) private val launcherMetaApi = LauncherMetaApi(ktorClient, ktorClientJson, cache) - suspend fun RequestContext.search(searchTerm: String, repository: Repository?): List { + suspend fun RequestContext.search(searchTerm: String, + repository: Repository?, limit: Int): List { val results = mutableListOf() coroutineScope { val modrinthRequest = async { if (repository == null || repository == Repository.MODRINTH) { - with(modrinthApi) { searchProjects(searchTerm, limit = 8) }?.hits.orEmpty() + with(modrinthApi) { searchProjects(searchTerm, limit = limit) }?.hits.orEmpty() .map(CommonProjectResult.Companion::fromModrinthProjectResult) } else emptyList() } val curseforgeRequest = async { if (repository == null || repository == Repository.CURSEFORGE) { - with(curseforgeApi) { searchProjects(searchTerm, pageSize = 8) }.orEmpty() + with(curseforgeApi) { searchProjects(searchTerm, pageSize = limit) }.orEmpty() .map(CommonProjectResult.Companion::fromCurseforgeMod) } else emptyList() } diff --git a/pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/commands/SearchCommand.kt b/pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/commands/SearchCommand.kt index 3f2b68c..b63dba8 100644 --- a/pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/commands/SearchCommand.kt +++ b/pacmc-cli/src/commonMain/kotlin/net/axay/pacmc/cli/commands/SearchCommand.kt @@ -2,6 +2,9 @@ package net.axay.pacmc.cli.commands import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument +import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.types.int import net.axay.pacmc.app.repoapi.repoApiContext import net.axay.pacmc.cli.launchJob import net.axay.pacmc.cli.terminal @@ -13,11 +16,13 @@ class SearchCommand : CliktCommand( help = "Search for mods", ) { private val query by argument() + private val searchLimit by option( + "-l", "--limit", help = "Number of results to limit search to").int().default(8) override fun run() = launchJob { terminal.println("Searching with the given query '$query'") - val searchResults = repoApiContext(CachePolicy.ONLY_FRESH) { it.search(query, null) } + val searchResults = repoApiContext(CachePolicy.ONLY_FRESH) { it.search(query, null, searchLimit) } terminal.println() if (searchResults.isEmpty()) {