diff options
Diffstat (limited to 'src/fs-helper.ts')
| -rw-r--r-- | src/fs-helper.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/fs-helper.ts b/src/fs-helper.ts new file mode 100644 index 0000000..c443404 --- /dev/null +++ b/src/fs-helper.ts @@ -0,0 +1,77 @@ +import * as fs from 'fs' + +export function directoryExistsSync(path: string, required?: boolean): boolean { + if (!path) { + throw new Error("Arg 'path' must not be empty") + } + + let stats: fs.Stats + try { + stats = fs.statSync(path) + } catch (error) { + if (error.code === 'ENOENT') { + if (!required) { + return false + } + + throw new Error(`Directory '${path}' does not exist`) + } + + throw new Error( + `Encountered an error when checking whether path '${path}' exists: ${error.message}` + ) + } + + if (stats.isDirectory()) { + return true + } else if (!required) { + return false + } + + throw new Error(`Directory '${path}' does not exist`) +} + +export function existsSync(path: string): boolean { + if (!path) { + throw new Error("Arg 'path' must not be empty") + } + + try { + fs.statSync(path) + } catch (error) { + if (error.code === 'ENOENT') { + return false + } + + throw new Error( + `Encountered an error when checking whether path '${path}' exists: ${error.message}` + ) + } + + return true +} + +export function fileExistsSync(path: string): boolean { + if (!path) { + throw new Error("Arg 'path' must not be empty") + } + + let stats: fs.Stats + try { + stats = fs.statSync(path) + } catch (error) { + if (error.code === 'ENOENT') { + return false + } + + throw new Error( + `Encountered an error when checking whether path '${path}' exists: ${error.message}` + ) + } + + if (!stats.isDirectory()) { + return true + } + + return false +} |
