inference-server
Version:
Libraries and server to build AI applications. Adapters to various native bindings allowing local inference. Integrate it with your application, or use as a microservice.
45 lines • 1.77 kB
JavaScript
import { promises as fs } from 'node:fs';
import path from 'node:path';
/**
* Moves all contents from source directory into destination directory,
* overwriting any existing files/directories with the same name in destination.
* Files in destination that don't exist in source remain untouched.
* @param src - Source directory
* @param dest - Destination directory
*/
export async function moveDirectoryContents(src, dest) {
// Ensure the destination directory exists
await fs.mkdir(dest, { recursive: true });
// Read the contents of the source directory
const entries = await fs.readdir(src, { withFileTypes: true });
// Iterate through all entries (files and directories)
for (const entry of entries) {
const srcPath = path.join(src, entry.name);
const destPath = path.join(dest, entry.name);
if (entry.isDirectory()) {
// For directories: recursively move contents
await moveDirectoryContents(srcPath, destPath);
// Remove the now-empty source directory
await fs.rmdir(srcPath);
}
else {
try {
// For files: try to move directly first (more efficient)
await fs.rename(srcPath, destPath);
}
catch (error) {
if (error.code === 'EXDEV') {
// If cross-device move is not supported:
// 1. Copy the file
await fs.copyFile(srcPath, destPath);
// 2. Remove the original
await fs.unlink(srcPath);
}
else {
throw error;
}
}
}
}
}
//# sourceMappingURL=moveDirectoryContents.js.map