From d7d953c42561b12fcb6b499a24d638b03150720b Mon Sep 17 00:00:00 2001 From: LJNeon <23249107+LJNeon@users.noreply.github.com> Date: Sat, 1 Oct 2022 15:54:33 -0700 Subject: [PATCH 1/2] Create synchronized folder if necessary --- src/fileWatch.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/fileWatch.ts b/src/fileWatch.ts index da62cf2..84e827c 100644 --- a/src/fileWatch.ts +++ b/src/fileWatch.ts @@ -1,6 +1,7 @@ import CheapWatch from "cheap-watch"; import { config } from "./config"; import { EventType } from "./eventTypes"; +import { mkdir } from "fs/promises"; import { resolve } from "path"; import type { Signal } from "signal-js"; import type { File } from "./interfaces"; @@ -11,7 +12,20 @@ function fileFilter(file: File) { return false; } +function isError(err: unknown): err is NodeJS.ErrnoException { + return (err as NodeJS.ErrnoException).code !== undefined; +} + export async function setupWatch(signaller: Signal) { + try { + await mkdir(resolve(config.get("scriptsFolder"))); + } catch (err) { + if (isError(err) && err.code !== "EEXIST") { + console.log(`Unable to create folder '${config.get("scriptsFolder")}', exiting...`); + process.exit(); + } + } + const watch = new CheapWatch({ dir: config.get("scriptsFolder"), filter: fileFilter, From fb0f0040a51031680519b414cf5e3d51df395786 Mon Sep 17 00:00:00 2001 From: LJNeon <23249107+LJNeon@users.noreply.github.com> Date: Sat, 1 Oct 2022 17:08:34 -0700 Subject: [PATCH 2/2] Improve error message --- src/fileWatch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fileWatch.ts b/src/fileWatch.ts index 84e827c..a505560 100644 --- a/src/fileWatch.ts +++ b/src/fileWatch.ts @@ -21,7 +21,7 @@ export async function setupWatch(signaller: Signal) { await mkdir(resolve(config.get("scriptsFolder"))); } catch (err) { if (isError(err) && err.code !== "EEXIST") { - console.log(`Unable to create folder '${config.get("scriptsFolder")}', exiting...`); + console.log(`Failed to watch folder '${config.get("scriptsFolder")}' (${err.code})`); process.exit(); } }