import { DEFAULT_OP_CONFIG_FILE_NAME } from '@/constants' import type { ProjectCreatingCLIOptionSchema } from '@/types' import fse from 'fs-extra' import { join } from 'path' import prettier from 'prettier' const { writeFile } = fse const opConfigTemplate = ( stringLiterals: TemplateStringsArray, ...vars: Array<(options: ProjectCreatingCLIOptionSchema) => string> ) => async (options: ProjectCreatingCLIOptionSchema, folder: string) => { let content = '' for (let i = 0; i < stringLiterals.length; i++) { content += stringLiterals[i] if (i < vars.length) { content += vars[i]?.(options) || '' } } const code = await prettier .format(content.trim(), { parser: 'babel' }) .catch(() => content.trim()) await writeFile(join(folder, DEFAULT_OP_CONFIG_FILE_NAME), code) } const generateOpConfigFile = opConfigTemplate/* js */ ` /** @type { import("@ones-open/cli-utils").OpConfigSchema } */ export default { ${(options) => (options.onesVersion ? `onesVersion: '${options.onesVersion}',` : '')} scan: {} } ` export { generateOpConfigFile }