From 9caeee1cbb447afdf125fd0a4d2006831ecb58a9 Mon Sep 17 00:00:00 2001 From: Bohdan Lyzanets Date: Thu, 5 Dec 2019 11:42:58 +0200 Subject: [PATCH] feat(okidoc-site): improve site config yaml validation --- .../okidoc-site/site/config/configSchema.js | 2 +- packages/okidoc-site/site/getSiteConfig.js | 21 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/okidoc-site/site/config/configSchema.js b/packages/okidoc-site/site/config/configSchema.js index 8a90c8b..4b76432 100644 --- a/packages/okidoc-site/site/config/configSchema.js +++ b/packages/okidoc-site/site/config/configSchema.js @@ -18,7 +18,7 @@ const configSchema = { algoliaApiKey: Joi.string(), algoliaIndexName: Joi.string(), githubLink: Joi.string(), - }), + }).default({}), mdComponents: Joi.object({ path: Joi.string().required(), externalStyles: Joi.array().items(Joi.string()), diff --git a/packages/okidoc-site/site/getSiteConfig.js b/packages/okidoc-site/site/getSiteConfig.js index e44fc4a..187f1aa 100644 --- a/packages/okidoc-site/site/getSiteConfig.js +++ b/packages/okidoc-site/site/getSiteConfig.js @@ -34,19 +34,20 @@ function getEnvVariables(env) { } function getConfig(configPath) { + let configRaw; try { - const config = yaml.load(configPath); - - Joi.assert( - config, - configSchema, - `Invalid site config yaml file (${configPath}).`, - ); - - return config; + configRaw = yaml.load(configPath); } catch (e) { - throw new Error(`Invalid site config yaml file (${configPath})`); + throw new Error( + `Could not parse site config yaml file (${configPath}): ${e.message}`, + ); } + + return Joi.attempt( + configRaw, + configSchema, + `Invalid site config yaml file (${configPath})`, + ); } const { SITE_YAML_PATH, SITE_CWD } = getEnvVariables(process.env);