fix(fs): Fix directory handling in copy and copySync functions

This commit is contained in:
Philipp Kunz 2025-01-29 18:20:14 +01:00
parent f6fb28d32f
commit 40018532a7
3 changed files with 13 additions and 1 deletions

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## 2025-01-29 - 11.1.9 - fix(fs)
Fix directory handling in copy and copySync functions
- Ensured existing directories at destination are removed before copying over them in async copy.
- Added a similar check and handling for synchronous copySync when destination is a directory.
## 2025-01-29 - 11.1.8 - fix(fs) ## 2025-01-29 - 11.1.8 - fix(fs)
Fixed copy and copySync functions to ensure they always overwrite files. Fixed copy and copySync functions to ensure they always overwrite files.

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartfile', name: '@push.rocks/smartfile',
version: '11.1.8', version: '11.1.9',
description: 'Provides comprehensive tools for efficient file management in Node.js using TypeScript, including handling streams, virtual directories, and various file operations.' description: 'Provides comprehensive tools for efficient file management in Node.js using TypeScript, including handling streams, virtual directories, and various file operations.'
} }

View File

@ -75,6 +75,9 @@ export const isFile = (pathArg): boolean => {
* copies a file or directory from A to B on the local disk * copies a file or directory from A to B on the local disk
*/ */
export const copy = async (fromArg: string, toArg: string): Promise<void> => { export const copy = async (fromArg: string, toArg: string): Promise<void> => {
if (isDirectory(fromArg) && isDirectory(toArg)) {
await remove(toArg);
}
return await plugins.fsExtra.copy(fromArg, toArg, {overwrite: true}); return await plugins.fsExtra.copy(fromArg, toArg, {overwrite: true});
}; };
@ -82,6 +85,9 @@ export const copy = async (fromArg: string, toArg: string): Promise<void> => {
* copies a file or directory SYNCHRONOUSLY from A to B on the local disk * copies a file or directory SYNCHRONOUSLY from A to B on the local disk
*/ */
export const copySync = (fromArg: string, toArg: string): void => { export const copySync = (fromArg: string, toArg: string): void => {
if (isDirectory(fromArg) && isDirectory(toArg)) {
removeSync(toArg);
}
return plugins.fsExtra.copySync(fromArg, toArg, {overwrite: true}); return plugins.fsExtra.copySync(fromArg, toArg, {overwrite: true});
}; };