diff --git a/src/dev-cli/index.ts b/src/dev-cli/index.ts index 13a8210..52f1236 100644 --- a/src/dev-cli/index.ts +++ b/src/dev-cli/index.ts @@ -9,7 +9,7 @@ import { logDeepObject } from '@/dev-cli/logging'; import { getMovieMediaDetails, getShowMediaDetails } from '@/dev-cli/tmdb'; import { CommandLineArguments, processOptions } from '@/dev-cli/validate'; -import { MetaOutput, ProviderControls, getBuiltinEmbeds, getBuiltinSources } from '..'; +import { MetaOutput, ProviderMakerOptions, getBuiltinEmbeds, getBuiltinSources, makeProviders } from '..'; dotenv.config(); @@ -49,8 +49,9 @@ function joinMediaTypes(mediaTypes: string[] | undefined) { return ''; // * Embed sources pass through here too } -async function runScraper(providers: ProviderControls, source: MetaOutput, options: CommandLineArguments) { +async function runScraper(providerOptions: ProviderMakerOptions, source: MetaOutput, options: CommandLineArguments) { const spinnies = new Spinnies(); + const providers = makeProviders(providerOptions); if (source.type === 'embed') { spinnies.add('scrape', { text: `Running ${source.name} scraper on ${options.url}` }); @@ -200,8 +201,8 @@ async function runQuestions() { } } - const { providers, source: validatedSource, options: validatedOps } = await processOptions(sources, options); - await runScraper(providers, validatedSource, validatedOps); + const { providerOptions, source: validatedSource, options: validatedOps } = await processOptions(sources, options); + await runScraper(providerOptions, validatedSource, validatedOps); } async function runCommandLine() { @@ -216,8 +217,12 @@ async function runCommandLine() { program.parse(); - const { providers, source: validatedSource, options: validatedOps } = await processOptions(sources, program.opts()); - await runScraper(providers, validatedSource, validatedOps); + const { + providerOptions, + source: validatedSource, + options: validatedOps, + } = await processOptions(sources, program.opts()); + await runScraper(providerOptions, validatedSource, validatedOps); } if (process.argv.length === 2) { diff --git a/src/dev-cli/validate.ts b/src/dev-cli/validate.ts index 60c8340..b600454 100644 --- a/src/dev-cli/validate.ts +++ b/src/dev-cli/validate.ts @@ -2,7 +2,7 @@ import nodeFetch from 'node-fetch'; import { Embed, Sourcerer } from '@/providers/base'; -import { makeProviders, makeStandardFetcher, targets } from '..'; +import { ProviderMakerOptions, makeStandardFetcher, targets } from '..'; export type CommandLineArguments = { fetcher: string; @@ -15,8 +15,9 @@ export type CommandLineArguments = { }; export async function processOptions(sources: Array, options: CommandLineArguments) { - if (options.fetcher !== 'node-fetch' && options.fetcher !== 'native') { - throw new Error("Fetcher must be either 'native' or 'node-fetch'"); + const fetcherOptions = ['node-fetch', 'native', 'browser']; + if (!fetcherOptions.includes(options.fetcher)) { + throw new Error(`Fetcher must be any of: ${fetcherOptions.join()}`); } if (!options.sourceId.trim()) { @@ -77,13 +78,13 @@ export async function processOptions(sources: Array, options: fetcher = makeStandardFetcher(nodeFetch); } - const providers = makeProviders({ + const providerOptions: ProviderMakerOptions = { fetcher, - target: targets.NATIVE, - }); + target: targets.ANY, + }; return { - providers, + providerOptions, options, source, };