@zebrains/velund-python
Version:
Python-генератор для системы UI-компонентов Velund
36 lines • 1.82 kB
JavaScript
import { defineVelundGenerator } from '@velund/core';
import { generatePyProject } from './helpers/generatePyProject.js';
import { generateTemplateComponent } from './templates/TemplateComponent.js';
import { generatePrepareRegistry } from './templates/PrepareRegistry.js';
import { generateComponent } from './templates/Component.js';
import { renderers } from './renderers/index.js';
import path from 'path';
import * as fs from 'fs';
import { generateInitPy } from './helpers/generateInitPy.js';
const pythonGenerator = defineVelundGenerator((options) => {
return {
id: 'python',
renderers: Object.keys(renderers),
generate(rendererName, components, outDir) {
// Выбираем и используем соответствующий рендерер
const renderer = renderers[rendererName];
if (!renderer) {
throw new Error(`Unsupported renderer: ${rendererName}`);
}
// Создаем структуру директорий
const componentDir = path.join(outDir, 'components');
fs.mkdirSync(componentDir, { recursive: true });
// Генерируем базовые файлы
generateTemplateComponent(outDir);
generatePrepareRegistry(outDir, components);
components.forEach((comp) => generateComponent(comp, outDir));
// Генерируем Renderer.js и package.json
renderer.generate({ components, outDir });
generateInitPy(outDir, components);
generatePyProject(outDir, rendererName, options?.manifest);
console.log(`✅ PYTHON library (${rendererName}) generated in`, outDir);
},
};
});
export default pythonGenerator;
//# sourceMappingURL=index.js.map