UNPKG

estructura_automation

Version:

Paquete de estructura de automation

135 lines (119 loc) 4.24 kB
const fs = require("fs-extra"); const path = require("path"); const { exec } = require("child_process"); // Lista de carpetas que deseas mover const folders = [ "envs", "constant", "documentation", "Locators", "models", "plugins", "report", "test", "utils", "assets", ]; // Lista de archivos individuales que deseas mover const files = [ "custom-reporter.ts", "index.ts", "eslint.config.js", "package.json", "playwright.config.ts" ]; // Dependencias necesarias para el proyecto const dependencies = [ "gherkin@^9.0.0", "gherkin-parse@^1.0.12", "@faker-js/faker@^9.6.0", "@playwright/test@^1.51.1", "@types/node@^22.13.13", "eslint@^9.23.0", "globals@^16.0.0", "typescript-eslint@^8.28.0", "dotenv@^16.4.5", "cross-env@^7.0.3", ]; // Ruta base de origen (dentro de node_modules/estructura/template) const baseSourceDir = path.join(__dirname, "template"); // Ruta de destino (en la raíz del proyecto) const baseTargetDir = path.join(__dirname, "../../"); console.log("Iniciando la copia de carpetas y archivos..."); console.log("Directorio origen:", baseSourceDir); console.log("Directorio destino:", baseTargetDir); // Función para verificar si un archivo existe const fileExists = async (filePath) => { try { await fs.access(filePath); return true; } catch { return false; } }; // Copia las carpetas Promise.allSettled( folders.map(async (folder) => { const sourceDir = path.join(baseSourceDir, folder); const targetDir = path.join(baseTargetDir, folder); console.log(`Verificando carpeta origen: ${sourceDir}`); const exists = await fileExists(sourceDir); if (!exists) { throw new Error(`Carpeta no encontrada: ${sourceDir}`); } console.log(`Copiando carpeta desde: ${sourceDir} hacia: ${targetDir}`); return fs.copy(sourceDir, targetDir, { overwrite: true }); }) ).then((folderResults) => { return Promise.allSettled( files.map(async (file) => { const sourceFile = path.join(baseSourceDir, file); const targetFile = path.join(baseTargetDir, file); console.log(`Verificando archivo origen: ${sourceFile}`); const exists = await fileExists(sourceFile); if (!exists) { throw new Error(`Archivo no encontrado: ${sourceFile}`); } console.log(`Copiando archivo desde: ${sourceFile} hacia: ${targetFile}`); return fs.copy(sourceFile, targetFile, { overwrite: true }); }) ).then((fileResults) => { console.log("\nResultados de la copia de carpetas:"); folderResults.forEach((result, index) => { if (result.status === "fulfilled") { console.log(`✔️ Carpeta '${folders[index]}' copiada exitosamente.`); } else { console.error(`❌ Error al copiar la carpeta '${folders[index]}':`, result.reason); } }); console.log("\nResultados de la copia de archivos:"); fileResults.forEach((result, index) => { if (result.status === "fulfilled") { console.log(`✔️ Archivo '${files[index]}' copiado exitosamente.`); } else { console.error(`❌ Error al copiar el archivo '${files[index]}':`, result.reason); } }); // Instalar dependencias automáticamente console.log("\nInstalando dependencias necesarias..."); exec(`npm install ${dependencies.join(" ")}`, { cwd: baseTargetDir }, (err, stdout, stderr) => { if (err) { console.error("Error instalando dependencias:", err); console.error(stderr); } else { console.log("Dependencias instaladas correctamente:"); console.log(stdout); // Eliminar el archivo postinstall.js const postinstallFile = path.join(__dirname, "postinstall.js"); console.log("\nEliminando el archivo postinstall.js..."); fs.remove(postinstallFile, (removeErr) => { if (removeErr) { console.error("Error eliminando el archivo postinstall.js:", removeErr); } else { console.log("Archivo postinstall.js eliminado correctamente."); } }); } }); }); });