From 90db7e28a66c6a720914f7db0dddec8e2f133569 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 5 Feb 2021 17:08:52 +0100
Subject: [PATCH] feat(config): delete after setting admin config (#8557)

---
 lib/config/admin.ts             | 17 ++++++++++-------
 lib/config/definitions.ts       |  4 ----
 lib/workers/global/index.ts     |  3 ---
 lib/workers/repository/index.ts |  2 ++
 4 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/config/admin.ts b/lib/config/admin.ts
index 33d0e99f84..1bbb4b2ae8 100644
--- a/lib/config/admin.ts
+++ b/lib/config/admin.ts
@@ -2,17 +2,20 @@ import { RenovateConfig, RepoAdminConfig } from './common';
 
 let adminConfig: RepoAdminConfig = {};
 
-const derivedAdminOptions = ['localDir'];
+// TODO: once admin config work is complete, add a test to make sure this list includes all options with admin=true
+export const repoAdminOptions = [
+  'allowPostUpgradeCommandTemplating',
+  'allowedPostUpgradeCommands',
+  'dockerImagePrefix',
+  'dockerUser',
+  'trustLevel',
+];
 
-export function setAdminConfig(
-  config: RenovateConfig = {},
-  adminOptions = Object.keys(config)
-): void {
+export function setAdminConfig(config: RenovateConfig = {}): void {
   adminConfig = {};
-  const repoAdminOptions = adminOptions.concat(derivedAdminOptions);
   for (const option of repoAdminOptions) {
     adminConfig[option] = config[option];
-    // TODO: delete from config
+    delete config[option]; // eslint-disable-line no-param-reassign
   }
 }
 
diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index cfe7c01d26..f30e2df692 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -1920,10 +1920,6 @@ export function getOptions(): RenovateOptions[] {
   return options;
 }
 
-export function getAdminOptionNames(): string[] {
-  return options.filter((option) => option.admin).map((option) => option.name);
-}
-
 function loadManagerOptions(): void {
   for (const [name, config] of getManagers().entries()) {
     if (config.defaultConfig) {
diff --git a/lib/workers/global/index.ts b/lib/workers/global/index.ts
index e9075469fd..4e072cc51b 100644
--- a/lib/workers/global/index.ts
+++ b/lib/workers/global/index.ts
@@ -4,8 +4,6 @@ import fs from 'fs-extra';
 import upath from 'upath';
 import * as configParser from '../../config';
 import { GlobalConfig } from '../../config';
-import { setAdminConfig } from '../../config/admin';
-import { getAdminOptionNames } from '../../config/definitions';
 import { getProblems, logger, setMeta } from '../../logger';
 import { setUtilConfig } from '../../util';
 import * as hostRules from '../../util/host-rules';
@@ -61,7 +59,6 @@ export async function start(): Promise<number> {
         break;
       }
       const repoConfig = await getRepositoryConfig(config, repository);
-      setAdminConfig(repoConfig, getAdminOptionNames());
       await setUtilConfig(repoConfig);
       if (repoConfig.hostRules) {
         hostRules.clear();
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index 370e1d3d14..02c4ec312f 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -1,5 +1,6 @@
 import fs from 'fs-extra';
 import { RenovateConfig } from '../../config';
+import { setAdminConfig } from '../../config/admin';
 import { logger, setMeta } from '../../logger';
 import { deleteLocalFile, privateCacheDir } from '../../util/fs';
 import * as queue from '../../util/http/queue';
@@ -28,6 +29,7 @@ export async function renovateRepository(
 ): Promise<ProcessResult> {
   splitInit();
   let config = { ...repoConfig };
+  setAdminConfig(config);
   setMeta({ repository: config.repository });
   logger.info({ renovateVersion }, 'Repository started');
   logger.trace({ config });
-- 
GitLab