Skip to content

Commit 1cc2f4a

Browse files
committed
feat(cli): add --remote option to potentially select a remote server for queries
1 parent 921d255 commit 1cc2f4a

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

cli/src/index.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env bun
22

33
import { program, Option } from '@commander-js/extra-typings';
4-
import { CurseForgeRepository, LocalSolutionFinder, LoggerConfig, ModLoader, ModrinthRepository, LogLevel, Constraints, Solution, ModMetadata, RepositoryUtil, ModRepositoryName, RemoteModQueryService, IModQueryService, IRepository } from 'mclib';
4+
import { CurseForgeRepository, LocalSolutionFinder, LoggerConfig, ModLoader, ModrinthRepository, LogLevel, Constraints, Solution, ModMetadata, RepositoryUtil, ModRepositoryName, RemoteModQueryService, IModQueryService, IRepository, LocalModQueryService } from 'mclib';
55
import { readFileSync } from 'fs';
66
import pino from 'pino';
77

@@ -33,8 +33,14 @@ async function fetchWrapper(input: RequestInfo | URL, options?: RequestInit): Pr
3333
return response;
3434
}
3535

36-
function getModQueryService(selectedRepos?: string[]) {
37-
return new RemoteModQueryService(fetchWrapper, "http://127.0.0.1:3000", getRepositories(selectedRepos));
36+
function getModQueryService(selectedRepos?: string[], remoteUrl?: string) {
37+
if (remoteUrl) {
38+
logger.info(`Using remote mod query service at ${remoteUrl}`);
39+
return new RemoteModQueryService(fetchWrapper, remoteUrl, getRepositories(selectedRepos));
40+
} else {
41+
logger.info('Using local mod query service');
42+
return new LocalModQueryService(getRepositories(selectedRepos));
43+
}
3844
}
3945
function getRepositories(selectedRepos?: string[]): IRepository[] {
4046
const repoMap = {
@@ -67,6 +73,7 @@ interface CliOptions {
6773
details: boolean;
6874
nbSolutions: number;
6975
sinytra: boolean;
76+
remote?: string;
7077
}
7178

7279
function validateCliOptions(options: CliOptions) {
@@ -198,8 +205,9 @@ program
198205
.option('-n, --nb-solutions <number>', 'Number of solutions to output', (value) => parseInt(value, 10), 3)
199206
.option('--sinytra', 'Inject forge and neoforge into fabric-compatible releases', false)
200207
.option('-r, --repository <repo...>', 'Repositories to use (modrinth, curseforge)')
208+
.option('--remote <url>', 'Remote server URL to query mods', '')
201209
.action(async (cliOptions: CliOptions & { repository?: string[] }) => {
202-
const modQueryService = getModQueryService(cliOptions.repository);
210+
const modQueryService = getModQueryService(cliOptions.repository, cliOptions.remote);
203211
validateCliOptions(cliOptions);
204212

205213
const requestedMods = await getMods(modQueryService, cliOptions);

0 commit comments

Comments
 (0)