import { fail } from '../log.js'; import { runAppCommandWithInherit } from '../mpv.js'; import { commandExists } from '../util.js'; import { runJellyfinPlayMenu } from '../jellyfin.js'; import type { LauncherCommandContext } from './context.js'; export async function runJellyfinCommand(context: LauncherCommandContext): Promise { const { args, appPath, scriptPath, mpvSocketPath, launcherJellyfinConfig } = context; if (!appPath) { return false; } if (args.jellyfin) { const forwarded = ['--jellyfin']; if (args.logLevel !== 'info') forwarded.push('--log-level', args.logLevel); runAppCommandWithInherit(appPath, forwarded); } if (args.jellyfinLogin) { const serverUrl = args.jellyfinServer || launcherJellyfinConfig.serverUrl || ''; const username = args.jellyfinUsername || launcherJellyfinConfig.username || ''; const password = args.jellyfinPassword || ''; if (!serverUrl || !username || !password) { fail( '--jellyfin-login requires server, username, and password. Pass flags or run `subminer --jellyfin`.', ); } const forwarded = [ '--jellyfin-login', '--jellyfin-server', serverUrl, '--jellyfin-username', username, '--jellyfin-password', password, ]; if (args.logLevel !== 'info') forwarded.push('--log-level', args.logLevel); runAppCommandWithInherit(appPath, forwarded); } if (args.jellyfinLogout) { const forwarded = ['--jellyfin-logout']; if (args.logLevel !== 'info') forwarded.push('--log-level', args.logLevel); runAppCommandWithInherit(appPath, forwarded); } if (args.jellyfinPlay) { if (!args.useRofi && !commandExists('fzf')) { fail('fzf not found. Install fzf or use -R for rofi.'); } if (args.useRofi && !commandExists('rofi')) { fail('rofi not found. Install rofi or omit -R for fzf.'); } await runJellyfinPlayMenu(appPath, args, scriptPath, mpvSocketPath); return true; } if (args.jellyfinDiscovery) { const forwarded = ['--start']; if (args.logLevel !== 'info') forwarded.push('--log-level', args.logLevel); runAppCommandWithInherit(appPath, forwarded); } return Boolean( args.jellyfin || args.jellyfinLogin || args.jellyfinLogout || args.jellyfinPlay || args.jellyfinDiscovery, ); }