From 2abd46c18c026aac29c8da1db30f6a4e4bc1dce1 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Wed, 5 May 2021 13:44:57 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B6=F0=9F=8F=BD=20Refactored=20the=20w?= =?UTF-8?q?alk=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/utils/fs.utils.ts | 42 +++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/server/utils/fs.utils.ts b/src/server/utils/fs.utils.ts index a1ba504..0085446 100644 --- a/src/server/utils/fs.utils.ts +++ b/src/server/utils/fs.utils.ts @@ -255,29 +255,37 @@ export const getCovers = async ( export const walkFolder = async (folder: string): Promise => { const result: IFolderData[] = []; - await Walk.walk(folder, async (err, pathname, dirent) => { + let walkResult: IFolderData = { + name: "", + extension: "", + containedIn: "", + isFile: false, + isLink: true, + }; + + const walk = Walk.create({ sort: filterOutDotFiles }); + await walk(folder, async (err, pathname, dirent) => { if (err) { logger.error("Failed to lstat directory", { error: err }); return false; } - const walkResult = { - name: path.basename(dirent.name, path.extname(dirent.name)), - extension: path.extname(dirent.name), - containedIn: path.dirname(pathname), - isFile: dirent.isFile(), - isLink: dirent.isSymbolicLink(), - }; - logger.info( - `Scanned ${dirent.name} contained in ${path.dirname(pathname)}`, - ); - result.push(walkResult); + if ([".cbz", ".cbr"].includes(path.extname(dirent.name))) { + walkResult = { + name: path.basename(dirent.name, path.extname(dirent.name)), + extension: path.extname(dirent.name), + containedIn: path.dirname(pathname), + isFile: dirent.isFile(), + isLink: dirent.isSymbolicLink(), + }; + logger.info( + `Scanned ${dirent.name} contained in ${path.dirname(pathname)}`, + ); + result.push(walkResult); + } }); return result; }; -const filterNonComicBookExtensions = (entities) => { - return entities.filter((entity) => entity.extname) -} export const explodePath = (filePath: string): IExplodedPathResponse => { const exploded = filePath.split("/"); const fileName = remove(exploded, (item) => { @@ -315,3 +323,7 @@ export const extractMetadataFromImage = async ( }); return image; }; + +const filterOutDotFiles = (entities) => { + return entities.filter((ent) => !ent.name.startsWith(".")); +};