UNPKG

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.

46 lines (41 loc) 1.45 kB
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: string, dest: string): Promise<void> { // 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: any) { 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 } } } } }