import type { Logger } from '@hey-api/codegen-core'; import { loadConfigFile } from '@hey-api/codegen-core'; import { expandToJobs } from './expand'; // import { getProjectDependencies } from './packages'; import type { ResolvedJob } from './resolve'; import { resolveConfig } from './resolve'; import type { UserConfig } from './types'; import { validateJobs } from './validate'; export type Configs = { dependencies: Record; jobs: ReadonlyArray; }; /** * @internal */ export async function resolveJobs({ logger, userConfigs, }: { logger: Logger; userConfigs: ReadonlyArray; }): Promise { const configs: Array = []; const dependencies: Record = {}; // let dependencies: Record = {}; const eventLoad = logger.timeEvent('load'); for (const userConfig of userConfigs) { let configFile: string | undefined; if (userConfig.configFile) { const parts = userConfig.configFile.split('.'); configFile = parts.slice(0, parts.length - 1).join('.'); } const loaded = await loadConfigFile({ configFile, logger, name: 'openapi-python', userConfig, }); if (!Object.keys(dependencies).length) { // TODO: handle dependencies for multiple configs properly? // TODO: collect Python dependencies // dependencies = getProjectDependencies( // loaded.foundConfig ? loaded.configFile : undefined, // ); } configs.push(...loaded.configs); } eventLoad.timeEnd(); const eventBuild = logger.timeEvent('build'); const jobs = validateJobs(expandToJobs(configs)); const resolvedJobs = jobs.map((validated) => resolveConfig(validated, dependencies)); eventBuild.timeEnd(); return { dependencies, jobs: resolvedJobs, }; }