From cb92a9e01070b42945f6010a49aaba3b1b0b48a2 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 29 Mar 2018 05:47:49 +0200
Subject: [PATCH] fix: validator needs to use async validate command

Closes #1734
---
 bin/config-validator.js | 72 +++++++++++++++++++++--------------------
 1 file changed, 37 insertions(+), 35 deletions(-)

diff --git a/bin/config-validator.js b/bin/config-validator.js
index 422c053b36..0257f4d413 100644
--- a/bin/config-validator.js
+++ b/bin/config-validator.js
@@ -7,8 +7,8 @@ const { validateConfig } = require('../lib/config/validation');
 
 let returnVal = 0;
 
-function validate(desc, config) {
-  const res = validateConfig(config);
+async function validate(desc, config) {
+  const res = await validateConfig(config);
   if (res.errors.length) {
     console.log(
       `${desc} contains errors:\n\n${JSON.stringify(res.errors, null, 2)}`
@@ -23,42 +23,44 @@ function validate(desc, config) {
   }
 }
 
-const renovateConfigFiles = [
-  'renovate.json',
-  '.renovaterc',
-  '.renovaterc.json',
-];
-for (const file of renovateConfigFiles) {
-  try {
-    const rawContent = fs.readFileSync(file, 'utf8');
-    console.log(`Validating ${file}`);
+(async () => {
+  const renovateConfigFiles = [
+    'renovate.json',
+    '.renovaterc',
+    '.renovaterc.json',
+  ];
+  for (const file of renovateConfigFiles) {
     try {
-      const jsonContent = JSON.parse(rawContent);
-      validate(file, jsonContent);
+      const rawContent = fs.readFileSync(file, 'utf8');
+      console.log(`Validating ${file}`);
+      try {
+        const jsonContent = JSON.parse(rawContent);
+        await validate(file, jsonContent);
+      } catch (err) {
+        console.log(`${file} is not valid JSON`);
+        returnVal = 1;
+      }
     } catch (err) {
-      console.log(`${file} is not valid JSON`);
-      returnVal = 1;
+      // file does not exist
     }
-  } catch (err) {
-    // file does not exist
   }
-}
-try {
-  const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
-  if (pkgJson.renovate) {
-    console.log(`Validating package.json > renovate`);
-    validate('package.json > renovate', pkgJson.renovate);
+  try {
+    const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
+    if (pkgJson.renovate) {
+      console.log(`Validating package.json > renovate`);
+      await validate('package.json > renovate', pkgJson.renovate);
+    }
+    if (pkgJson['renovate-config']) {
+      console.log(`Validating package.json > renovate-config`);
+      for (const presetConfig of Object.values(pkgJson['renovate-config'])) {
+        await validate('package.json > renovate-config', presetConfig);
+      }
+    }
+  } catch (err) {
+    // ignore
   }
-  if (pkgJson['renovate-config']) {
-    console.log(`Validating package.json > renovate-config`);
-    Object.values(pkgJson['renovate-config']).forEach(presetConfig => {
-      validate('package.json > renovate-config', presetConfig);
-    });
+  if (returnVal !== 0) {
+    process.exit(returnVal);
   }
-} catch (err) {
-  // ignore
-}
-if (returnVal !== 0) {
-  process.exit(returnVal);
-}
-console.log('OK');
+  console.log('OK');
+})();
-- 
GitLab