UNPKG

@usefui/svgjsx

Version:

Open Source Command Line Interfaces to generate JSX Icon Components from SVGs.

99 lines • 4.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleError = exports.displayCompletion = exports.generateIcons = void 0; const file_operations_1 = require("../core/file-operations"); const transformers_1 = require("../core/transformers"); const result_1 = require("../utils/result"); const logComponent = (component, outputPath) => { console.log(`āœ… Added ${component.name} to ${outputPath}`); }; const logSkippedFile = (filename, reason) => { const message = reason ? `${reason}` : "Invalid component name"; console.warn(`āš ļø Skipped ${filename}: ${message}`); }; const getMemoryUsage = () => Math.round(process.memoryUsage().heapUsed / 1024); const processSvgFile = (config) => (svgPath) => { return (0, result_1.chain)((svgFile) => { const component = (0, transformers_1.createTsxComponent)(svgFile); if (!component) { logSkippedFile(svgFile.name); return (0, result_1.success)(null); } const appendResult = (0, file_operations_1.appendFile)(config.outputFile, component.content); if (!(0, result_1.isSuccess)(appendResult)) { return appendResult; } logComponent(component, config.outputFile); return (0, result_1.success)(component); })((0, file_operations_1.readSvgFile)(svgPath)); }; const generateIcons = (config) => { console.log(`šŸ“‚ Source: ${config.sourceDir}`); console.log(`šŸ“ Output: ${config.outputFile}`); const initResult = (0, file_operations_1.writeFile)(config.outputFile, (0, transformers_1.generateHeader)()); if (!(0, result_1.isSuccess)(initResult)) { return initResult; } return (0, result_1.chain)((svgFiles) => { if (svgFiles.length === 0) { console.log(`ā„¹ļø No SVG files found in '${config.sourceDir}'`); return (0, result_1.success)({ componentsCount: 0, memoryUsed: getMemoryUsage(), outputPath: config.outputFile, skippedFiles: [], }); } console.log(`šŸ“‹ Found ${svgFiles.length} SVG files`); let successCount = 0; const skippedFiles = []; const componentNames = []; for (let i = 0; i < svgFiles.length; i++) { const svgPath = svgFiles[i]; if (!svgPath) { return (0, result_1.failure)(new Error(`Cannot process file with index ${i} in ${svgFiles}`)); } const result = processSvgFile(config)(svgPath); if ((0, result_1.isSuccess)(result)) { if (result.value !== null) { successCount++; componentNames.push(result.value.name); } else { skippedFiles.push(svgPath); } } else { console.error(`āŒ Error processing ${svgPath}: ${result.error.message}`); skippedFiles.push(svgPath); } } const exportList = (0, transformers_1.generateExportList)(componentNames); if (exportList && componentNames.length > 0) { (0, file_operations_1.appendFile)(config.outputFile, exportList); } return (0, result_1.success)({ componentsCount: successCount, memoryUsed: getMemoryUsage(), outputPath: config.outputFile, skippedFiles, }); })((0, file_operations_1.findSvgFiles)(config.sourceDir)); }; exports.generateIcons = generateIcons; const displayCompletion = (result) => { console.log("\nšŸŽ‰ Generation completed!"); console.log(`šŸ“¦ Generated ${result.componentsCount} components`); console.log(`šŸ’½ Memory used: ${result.memoryUsed} KB`); console.log(`šŸ“ Output: ${result.outputPath}`); if (result.skippedFiles.length > 0) { console.log(`āš ļø Skipped ${result.skippedFiles.length} files`); } }; exports.displayCompletion = displayCompletion; const handleError = (error) => { console.error(`${error.message}`); process.exit(1); }; exports.handleError = handleError; //# sourceMappingURL=generate.js.map