const execSync = require('child_process').execSync; const fs = require('fs'); const path = require('path'); // Function to get all subdirectories of a given directory function getDirectories(srcPath, excludeDirs) { return fs .readdirSync(srcPath) .filter(file => !excludeDirs.includes(file) && fs.lstatSync(path.join(srcPath, file)).isDirectory()) .map(name => path.join(srcPath, name)); } // Get current working directory const cwd = process.cwd(); // Path to app-head directory const appHeadDir = path.join(cwd, 'project'); // Check if app-head exists if (!fs.existsSync(appHeadDir)) { console.error(`Error: ${appHeadDir} does not exist.`); process.exit(1); } // Execute reset.bat scripts try { // execSync(`cmd /c "cd ${appHeadDir} && scripts\\reset.bat"`, { stdio: 'inherit' }); } catch (err) { console.error(`Error executing reset.bat script: ${err.message}`); process.exit(1); } // Define excluded directories const excludedDirs = ['.next', 'node_modules', '.git', 'volumes']; // Copy app-head directory and its contents to a new directory with an increasing number suffix let maxNum = 0; const directories = getDirectories(cwd, excludedDirs); for (const dir of directories) { const match = dir.match(/^.+draft(\d+)$/); if (match) { const num = parseInt(match[1], 10); if (num > maxNum) { maxNum = num; } } } var zerofilled = ('0000' + (maxNum + 1)).slice(-4); const targetDir = path.join(cwd, `draft${zerofilled}`); fs.mkdirSync(targetDir); // Copy app-head directory and its contents to targetDir, excluding specified directories fs.cpSync(appHeadDir, targetDir, { filter: src => !excludedDirs.includes(path.basename(src)), recursive: true, }); console.log(`Successfully copied ${appHeadDir} to ${targetDir}.`);