fork of hey-api/openapi-ts because I need some additional things
at feat/skip-token 66 lines 1.9 kB view raw
1import type { Logger } from '@hey-api/codegen-core'; 2import { loadConfigFile } from '@hey-api/codegen-core'; 3 4import { expandToJobs } from './expand'; 5// import { getProjectDependencies } from './packages'; 6import type { ResolvedJob } from './resolve'; 7import { resolveConfig } from './resolve'; 8import type { UserConfig } from './types'; 9import { validateJobs } from './validate'; 10 11export type Configs = { 12 dependencies: Record<string, string>; 13 jobs: ReadonlyArray<ResolvedJob>; 14}; 15 16/** 17 * @internal 18 */ 19export async function resolveJobs({ 20 logger, 21 userConfigs, 22}: { 23 logger: Logger; 24 userConfigs: ReadonlyArray<UserConfig>; 25}): Promise<Configs> { 26 const configs: Array<UserConfig> = []; 27 const dependencies: Record<string, string> = {}; 28 // let dependencies: Record<string, string> = {}; 29 30 const eventLoad = logger.timeEvent('load'); 31 for (const userConfig of userConfigs) { 32 let configFile: string | undefined; 33 if (userConfig.configFile) { 34 const parts = userConfig.configFile.split('.'); 35 configFile = parts.slice(0, parts.length - 1).join('.'); 36 } 37 38 const loaded = await loadConfigFile<UserConfig>({ 39 configFile, 40 logger, 41 name: 'openapi-python', 42 userConfig, 43 }); 44 45 if (!Object.keys(dependencies).length) { 46 // TODO: handle dependencies for multiple configs properly? 47 // TODO: collect Python dependencies 48 // dependencies = getProjectDependencies( 49 // loaded.foundConfig ? loaded.configFile : undefined, 50 // ); 51 } 52 53 configs.push(...loaded.configs); 54 } 55 eventLoad.timeEnd(); 56 57 const eventBuild = logger.timeEvent('build'); 58 const jobs = validateJobs(expandToJobs(configs)); 59 const resolvedJobs = jobs.map((validated) => resolveConfig(validated, dependencies)); 60 eventBuild.timeEnd(); 61 62 return { 63 dependencies, 64 jobs: resolvedJobs, 65 }; 66}