From e50d9c1f05c6f6fa38cf026f230dde45da614f3b Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sat, 17 Mar 2018 06:07:39 +0100 Subject: [PATCH] feat: mirrorMode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit adds feature mirrorMode, aimed for “shadowing” a target repository. --- lib/config/definitions.js | 9 +++++++++ lib/workers/repository/init/config.js | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/config/definitions.js b/lib/config/definitions.js index b66fb0b600..ddf102736f 100644 --- a/lib/config/definitions.js +++ b/lib/config/definitions.js @@ -99,6 +99,15 @@ const options = [ default: false, admin: true, }, + { + name: 'mirrorMode', + description: + 'Set to true if Renovate should use fork mode with a renovate.json in branch `renovate-config`', + stage: 'repository', + type: 'boolean', + default: false, + admin: true, + }, // encryption { name: 'privateKey', diff --git a/lib/workers/repository/init/config.js b/lib/workers/repository/init/config.js index b99c3df553..c8802f571f 100644 --- a/lib/workers/repository/init/config.js +++ b/lib/workers/repository/init/config.js @@ -8,6 +8,25 @@ const presets = require('../../../config/presets'); // Check for config in `renovate.json` async function mergeRenovateConfig(config) { let returnConfig = { ...config }; + // istanbul ignore if + if (config.mirrorMode) { + logger.info('Repository is in mirror mode'); + let renovateJson; + try { + renovateJson = JSON.parse( + await platform.getFile('renovate.json', 'renovate-config') + ); + logger.info('Found mirror config'); + } catch (err) { + logger.debug('No mirror config found - using default config'); + renovateJson = { extends: ['config:base'] }; + } + const migratedConfig = migrateAndValidate(config, renovateJson); + const resolvedConfig = await presets.resolveConfigPresets(migratedConfig); + returnConfig = mergeChildConfig(returnConfig, resolvedConfig); + returnConfig.renovateJsonPresent = true; + return returnConfig; + } const fileList = await platform.getFileList(); let configFile; if (fileList.includes('renovate.json')) { -- GitLab