import { addProjectConfiguration, formatFiles, generateFiles, Tree } from '@nx/devkit'; import * as path from 'path'; import { AddEntriesGeneratorSchema } from './schema'; import * as fs from 'node:fs'; const loadJSON = (path) => { const content = fs.readFileSync(path); return JSON.parse(content as any); } const getFramework = async (projectRoot) => { // const mergeConfigPath = path.join(projectRoot, 'tools', 'mergeConfig.js'); // const webConfigPath = path.join(projectRoot, 'app', 'cde-webconfig.json'); const configPath = `${projectRoot}/config.json`; try { const json = loadJSON(configPath); return json?.uiFramework; } catch(err) { console.warn('Error while getting UI framework', err.message); return null; } } const resetProject = (rootDir: string) => { if (fs.existsSync(`${rootDir}/project.json`)) { fs.unlinkSync(`${rootDir}/project.json`); } if (fs.existsSync(`${rootDir}/src`)) { fs.rmSync(`${rootDir}/src`, { recursive: true, force: true }); } } export async function addEntriesGenerator(tree: Tree, options: AddEntriesGeneratorSchema) { const basePath = process.cwd(); const projectRoot = `${basePath}/${options.projectPath}`; const projectSrc = `${options.projectPath}/src`; // const sourcePath = path.join(__dirname, 'entries'); try { let framework = await getFramework(projectRoot); if (!framework) { framework = 'antui'; } console.log('UI framework specified: ', framework); resetProject(projectRoot); // addProjectConfiguration(tree, framework, { // root: projectRoot, // projectType: 'library', // sourceRoot: projectSrc, // targets: {}, // }); generateFiles(tree, path.join(__dirname, 'files'), projectSrc, {}); generateFiles(tree, path.join(__dirname, 'entries', framework), projectSrc, options); // await fs.cpSync(path.join(__dirname, 'files'), projectSrc, {recursive: true}); // await fs.cpSync(path.join(__dirname, 'entries', framework), projectSrc, {recursive: true}); await formatFiles(tree); } catch (err) { console.error('Error while generating entries: ', err); } } export default addEntriesGenerator;