Relay isFolder error back to renderer
This commit is contained in:
parent
175ea274c4
commit
8ffe1ece2d
1 changed files with 18 additions and 37 deletions
|
@ -5,7 +5,6 @@ import { createWriteStream, existsSync } from "node:fs";
|
|||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { Readable } from "node:stream";
|
||||
import { logError } from "./log";
|
||||
|
||||
export const fsExists = (path: string) => existsSync(path);
|
||||
|
||||
|
@ -99,54 +98,36 @@ export const moveFile = async (sourcePath: string, destinationPath: string) => {
|
|||
};
|
||||
|
||||
export const isFolder = async (dirPath: string) => {
|
||||
try {
|
||||
const stats = await fs.stat(dirPath);
|
||||
return stats.isDirectory();
|
||||
} catch (e) {
|
||||
let err = e;
|
||||
// if code is defined, it's an error from fs.stat
|
||||
if (typeof e.code !== "undefined") {
|
||||
// ENOENT means the file does not exist
|
||||
if (e.code === "ENOENT") {
|
||||
return false;
|
||||
}
|
||||
err = Error(`fs error code: ${e.code}`);
|
||||
}
|
||||
logError(err, "isFolder failed");
|
||||
return false;
|
||||
}
|
||||
if (!existsSync(dirPath)) return false;
|
||||
const stats = await fs.stat(dirPath);
|
||||
return stats.isDirectory();
|
||||
};
|
||||
|
||||
export const deleteFolder = async (folderPath: string) => {
|
||||
if (!existsSync(folderPath)) {
|
||||
return;
|
||||
}
|
||||
const stat = await fs.stat(folderPath);
|
||||
if (!stat.isDirectory()) {
|
||||
throw new Error("Path is not a folder");
|
||||
}
|
||||
// check if folder is empty
|
||||
// Ensure it is folder
|
||||
if (!isFolder(folderPath)) return;
|
||||
|
||||
// Ensure folder is empty
|
||||
const files = await fs.readdir(folderPath);
|
||||
if (files.length > 0) {
|
||||
throw new Error("Folder is not empty");
|
||||
}
|
||||
if (files.length > 0) throw new Error("Folder is not empty");
|
||||
|
||||
// rm -rf it
|
||||
await fs.rmdir(folderPath);
|
||||
};
|
||||
|
||||
export const rename = async (oldPath: string, newPath: string) => {
|
||||
if (!existsSync(oldPath)) {
|
||||
throw new Error("Path does not exist");
|
||||
}
|
||||
if (!existsSync(oldPath)) throw new Error("Path does not exist");
|
||||
await fs.rename(oldPath, newPath);
|
||||
};
|
||||
|
||||
export const deleteFile = async (filePath: string) => {
|
||||
if (!existsSync(filePath)) {
|
||||
return;
|
||||
}
|
||||
// Ensure it exists
|
||||
if (!existsSync(filePath)) return;
|
||||
|
||||
// And is a file
|
||||
const stat = await fs.stat(filePath);
|
||||
if (!stat.isFile()) {
|
||||
throw new Error("Path is not a file");
|
||||
}
|
||||
if (!stat.isFile()) throw new Error("Path is not a file");
|
||||
|
||||
// rm it
|
||||
return fs.rm(filePath);
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue