gitea-custom/tools/tasks/copy-to.js
Lucas Colombo 65a7943588 🥂 Initial commit
2023-07-01 16:19:40 -03:00

35 lines
1.1 KiB
JavaScript

import fs from 'fs';
import path from 'path';
import { Logger } from '../utils/logger.js';
const logger = new Logger(copyTo.name, 'info', 'brightYellow');
export async function copyTo(sourcePath, targetPath) {
logger.info(`Copying ${sourcePath} to ${targetPath}`);
await recursiveCopy(sourcePath, targetPath);
logger.info(`Copy has finished!`);
}
async function recursiveCopy(sourcePath, targetPath) {
// Create the target directory if it doesn't exist
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath, { recursive: true });
}
// Get all files and directories in the source path
const files = fs.readdirSync(sourcePath, { withFileTypes: true });
for (const file of files) {
const sourceFile = path.join(sourcePath, file.name);
const targetFile = path.join(targetPath, file.name);
if (file.isDirectory()) {
// Recursively copy directories
await recursiveCopy(sourceFile, targetFile);
} else {
// Copy files
fs.copyFileSync(sourceFile, targetFile);
}
}
}