const { existsSync, mkdirSync, writeFileSync } = require('fs'); const { join } = require('path'); const validateDir = (dir) => { if (!dir) { console.warn('⚠️ [DIR] dir is not defined'); return; } if (existsSync(dir)) { console.log(`✅ [DIR] ${dir} dir exist`); return; } console.log(`[DIR] Creating ${dir} dir in workspace root`); mkdirSync(dir); console.log('✅ [DIR] dir created.'); }; const handleError = (message, isRequired) => { if (isRequired) { throw new Error(message); } console.warn(message); }; const writeToFile = ({ dir, filename, content, isRequired, mode = '0644' }) => { validateDir(dir); const filePath = join(dir, filename); if (existsSync(filePath)) { const message = `⚠️ [FILE] ${filePath} Required file exist.`; handleError(message, isRequired); return; } try { console.log(`[FILE] writing ${filePath} file ...`, content.length); writeFileSync(filePath, content, { encoding: 'utf8', mode }); } catch (error) { const message = `⚠️[FILE] Writing to file error. filePath: ${filePath}, message: ${error.message}`; handleError(message, isRequired); } }; const validateRequiredInputs = (inputs) => { const inputKeys = Object.keys(inputs); const validInputs = inputKeys.filter((inputKey) => { const inputValue = inputs[inputKey]; if (!inputValue) { console.error(`❌ [INPUTS] ${inputKey} is mandatory`); } return inputValue; }); if (validInputs.length !== inputKeys.length) { throw new Error('⚠️ [INPUTS] Inputs not valid, aborting ...'); } }; const snakeToCamel = (str) => str.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase()); module.exports = { writeToFile, validateRequiredInputs, snakeToCamel };