update,
This commit is contained in:
59
tsc1877/task1/backup.js
Normal file
59
tsc1877/task1/backup.js
Normal file
@@ -0,0 +1,59 @@
|
||||
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}.`)
|
Reference in New Issue
Block a user