mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-26 04:19:27 -07:00
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { runAppCommandWithInherit } from '../mpv.js';
|
|
import type { LauncherCommandContext } from './context.js';
|
|
|
|
interface DictionaryCommandDeps {
|
|
runAppCommandWithInherit: (appPath: string, appArgs: string[]) => void;
|
|
}
|
|
|
|
const defaultDeps: DictionaryCommandDeps = {
|
|
runAppCommandWithInherit,
|
|
};
|
|
|
|
export function runDictionaryCommand(
|
|
context: LauncherCommandContext,
|
|
deps: DictionaryCommandDeps = defaultDeps,
|
|
): boolean {
|
|
const { args, appPath } = context;
|
|
if (!args.dictionary || !appPath) {
|
|
return false;
|
|
}
|
|
|
|
const forwarded = [
|
|
'--start',
|
|
args.dictionaryCandidates
|
|
? '--dictionary-candidates'
|
|
: args.dictionarySelect
|
|
? '--dictionary-select'
|
|
: '--dictionary',
|
|
];
|
|
if (args.dictionarySelect) {
|
|
if (!args.dictionaryAnilistId) {
|
|
throw new Error('Dictionary selection requires an AniList media ID.');
|
|
}
|
|
forwarded.push('--dictionary-anilist-id', String(args.dictionaryAnilistId));
|
|
}
|
|
if (typeof args.dictionaryTarget === 'string' && args.dictionaryTarget.trim()) {
|
|
forwarded.push('--dictionary-target', args.dictionaryTarget);
|
|
}
|
|
if (args.logLevel !== 'info') {
|
|
forwarded.push('--log-level', args.logLevel);
|
|
}
|
|
|
|
deps.runAppCommandWithInherit(appPath, forwarded);
|
|
return true;
|
|
}
|