From 7970f62a7d457e165d23a0a9b966750b9f41ab69 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Mon, 14 Aug 2017 07:49:33 +0200 Subject: [PATCH] feat: massage true/false strings to boolean (#673) Closes #637 --- lib/config/migration.js | 13 +++++++++++++ lib/config/validation.js | 4 ++-- test/config/__snapshots__/migration.spec.js.snap | 2 ++ test/config/migration.spec.js | 2 ++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/config/migration.js b/lib/config/migration.js index fff7d460f4..cafe3b23b1 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -1,3 +1,10 @@ +const options = require('./definitions').getOptions(); + +const optionTypes = {}; +options.forEach(option => { + optionTypes[option.name] = option.type; +}); + module.exports = { migrateConfig, }; @@ -68,6 +75,12 @@ function migrateConfig(config, parentConfig) { }); isMigrated = true; delete migratedConfig.depTypes; + } else if (optionTypes[key] === 'boolean') { + if (val === 'true') { + migratedConfig[key] = true; + } else if (val === 'false') { + migratedConfig[key] = false; + } } else if (isObject(val)) { const subMigrate = migrateConfig(val); if (subMigrate.isMigrated) { diff --git a/lib/config/validation.js b/lib/config/validation.js index 50620cf24e..d8055caeb1 100644 --- a/lib/config/validation.js +++ b/lib/config/validation.js @@ -2,7 +2,7 @@ const options = require('./definitions').getOptions(); const optionTypes = {}; options.forEach(option => { - optionTypes[option.name] = [option.type]; + optionTypes[option.name] = option.type; }); module.exports = { @@ -43,7 +43,7 @@ function validateConfig(config) { message: `Invalid configuration option: \`${key}\``, }); } else if (val != null) { - const type = optionTypes[key].toString(); + const type = optionTypes[key]; if (type === 'boolean') { if (val !== true && val !== false) { errors.push({ diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap index da1984e40a..0e91f01710 100644 --- a/test/config/__snapshots__/migration.spec.js.snap +++ b/test/config/__snapshots__/migration.spec.js.snap @@ -2,8 +2,10 @@ exports[`config/migration migrateConfig(config, parentConfig) it migrates config 1`] = ` Object { + "autodiscover": true, "commitMessage": "some commit message", "enabled": true, + "onboarding": false, "optionalDependencies": Object { "respectLatest": false, }, diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js index 17647cacca..9a7387c55e 100644 --- a/test/config/migration.spec.js +++ b/test/config/migration.spec.js @@ -7,6 +7,8 @@ describe('config/migration', () => { const config = { enabled: true, maintainYarnLock: true, + onboarding: 'false', + autodiscover: 'true', schedule: 'after 5pm', commitMessage: '{{semanticPrefix}}some commit message', prTitle: '{{semanticPrefix}}some pr title', -- GitLab