From e725488330e1da72170712eeb6dff4f30cdb3994 Mon Sep 17 00:00:00 2001 From: Coteh <3276350+Coteh@users.noreply.github.com> Date: Sun, 8 Nov 2020 21:19:38 -0500 Subject: [PATCH] #109 Add error reporter to path loaders --- packages/cli/loader.js | 25 ++++++++++++++++--------- packages/utilities/errors.js | 5 +++++ packages/utilities/paths.js | 9 +++------ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/cli/loader.js b/packages/cli/loader.js index b2cccfbc..b7fc366f 100644 --- a/packages/cli/loader.js +++ b/packages/cli/loader.js @@ -15,9 +15,16 @@ const { loadRawFromRoot, loadFromRoot, error, + exitWithError, load, } = require('@rescripts/utilities') +const errorReporter = (error) => { + if (error.code !== "ENOENT" && error.code !== "MODULE_NOT_FOUND") { + console.log(error); + } +} + const rootRescript = (() => { const configKeyI = findIndex( either(equals('--config'), equals('-c')), @@ -25,15 +32,15 @@ const rootRescript = (() => { ) const loaded = - configKeyI >= 0 - ? loadRawFromRoot(process.argv[configKeyI + 1]) || - loadFromRoot(process.argv[configKeyI + 1]) || - load(process.argv[configKeyI + 1]) + (configKeyI >= 0 + ? loadRawFromRoot(process.argv[configKeyI + 1], errorReporter) || + loadFromRoot(process.argv[configKeyI + 1], errorReporter) || + load(process.argv[configKeyI + 1], errorReporter) : loadFromPackageField('rescripts') || - loadRawFromRoot('.rescriptsrc') || - loadFromRoot('.rescriptsrc') || - error( - "You're likely seeing this bug because you haven't defined a root rescript or your root rescript contains a syntactical error. If you're certain of otherwise, please file an issue.", + loadRawFromRoot('.rescriptsrc', errorReporter) || + loadFromRoot('.rescriptsrc', errorReporter)) || + exitWithError( + "Rescripts ran into an error. Either your root rescript isn't defined or it contains syntactical errors. If you're certain of otherwise, please file an issue.", ) switch (type(loaded)) { @@ -99,7 +106,7 @@ const gatherPipes = (scope, rescript = rootRescript) => } default: { - error( + exitWithError( 'It seems that your Rescripts configuration is invalid. Please refer to the docs or post an issue if you believe this to be an internal bug. Thank you!', ) return diff --git a/packages/utilities/errors.js b/packages/utilities/errors.js index cc40fd23..c85b3627 100644 --- a/packages/utilities/errors.js +++ b/packages/utilities/errors.js @@ -1,8 +1,13 @@ const error = message => { console.error(message) +} + +const exitWithError = message => { + error(message) process.exit(1) } module.exports = { error, + exitWithError, } diff --git a/packages/utilities/paths.js b/packages/utilities/paths.js index 040ceda5..2ace7de2 100644 --- a/packages/utilities/paths.js +++ b/packages/utilities/paths.js @@ -66,10 +66,11 @@ const paths = { ), } -const makeSafe = loader => p => { +const makeSafe = loader => (p, r) => { try { return loader(p) } catch (e) { + r?.(e) return null } } @@ -86,11 +87,7 @@ const resolve = makeSafe(p => { } }) -const createFromLoader = (loader, prefix) => - pipe( - m => join(prefix, m), - loader, - ) +const createFromLoader = (loader, prefix) => (m, r) => loader(join(prefix, m), r) const {root, reactScriptsNodeModules} = paths const loadFromRoot = createFromLoader(load, root)