From 0a47657451014ad097ad04f26d27d2e63cacfe4e Mon Sep 17 00:00:00 2001
From: Philip <42116482+PhilipAbed@users.noreply.github.com>
Date: Fri, 25 Aug 2023 11:22:14 +0300
Subject: [PATCH] feat: Enhance lookup logs with repository problems (#23896)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/util/cache/repository/index.spec.ts       | 19 +++++++++++++++++-
 lib/workers/repository/common.ts              | 17 ++++++++++++++++
 .../repository/dependency-dashboard.ts        | 20 +++----------------
 lib/workers/repository/index.ts               | 14 ++++++++++++-
 4 files changed, 51 insertions(+), 19 deletions(-)
 create mode 100644 lib/workers/repository/common.ts

diff --git a/lib/util/cache/repository/index.spec.ts b/lib/util/cache/repository/index.spec.ts
index e5c28fba13..87d27fa7df 100644
--- a/lib/util/cache/repository/index.spec.ts
+++ b/lib/util/cache/repository/index.spec.ts
@@ -1,5 +1,6 @@
-import { mocked } from '../../../../test/util';
+import { logger, mocked } from '../../../../test/util';
 import { GlobalConfig } from '../../../config/global';
+import { printRepositoryProblems } from '../../../workers/repository';
 import * as _fs from '../../fs';
 import { initRepoCache } from './init';
 import type { RepoCacheConfig } from './types';
@@ -55,4 +56,20 @@ describe('util/cache/repository/index', () => {
     expect(getCache()).toBeEmpty();
     expect(isCacheModified()).toBeUndefined();
   });
+
+  it('prints repository problems', () => {
+    logger.getProblems.mockReturnValueOnce([
+      {
+        repository: 'some/repo',
+        level: 30,
+        msg: 'Problem 1',
+        artifactErrors: false,
+      },
+      { repository: 'some/repo', level: 30, msg: 'Problem 2' },
+    ]);
+
+    printRepositoryProblems(config);
+
+    expect(logger.logger.debug).toHaveBeenCalled();
+  });
 });
diff --git a/lib/workers/repository/common.ts b/lib/workers/repository/common.ts
new file mode 100644
index 0000000000..1ffb80b134
--- /dev/null
+++ b/lib/workers/repository/common.ts
@@ -0,0 +1,17 @@
+import { nameFromLevel } from 'bunyan';
+import type { RenovateConfig } from '../../config/types';
+import { getProblems } from '../../logger';
+
+export function extractRepoProblems(config: RenovateConfig): Set<string> {
+  return new Set(
+    getProblems()
+      .filter(
+        (problem) =>
+          problem.repository === config.repository && !problem.artifactErrors
+      )
+      .map(
+        (problem) =>
+          `${nameFromLevel[problem.level].toUpperCase()}: ${problem.msg}`
+      )
+  );
+}
diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts
index 04cab4eeab..ce41873227 100644
--- a/lib/workers/repository/dependency-dashboard.ts
+++ b/lib/workers/repository/dependency-dashboard.ts
@@ -1,14 +1,14 @@
 import is from '@sindresorhus/is';
-import { nameFromLevel } from 'bunyan';
 import { GlobalConfig } from '../../config/global';
 import type { RenovateConfig } from '../../config/types';
-import { getProblems, logger } from '../../logger';
+import { logger } from '../../logger';
 import type { PackageFile } from '../../modules/manager/types';
 import { platform } from '../../modules/platform';
 import { GitHubMaxPrBodyLen } from '../../modules/platform/github';
 import { regEx } from '../../util/regex';
 import * as template from '../../util/template';
 import type { BranchConfig, SelectAllConfig } from '../types';
+import { extractRepoProblems } from './common';
 import { getDepWarningsDashboard } from './errors-warnings';
 import { PackageFiles } from './package-files';
 import type { Vulnerability } from './process/types';
@@ -157,22 +157,8 @@ function getListItem(branch: BranchConfig, type: string): string {
 
 function appendRepoProblems(config: RenovateConfig, issueBody: string): string {
   let newIssueBody = issueBody;
-  const repoProblems = new Set(
-    getProblems()
-      .filter(
-        (problem) =>
-          problem.repository === config.repository && !problem.artifactErrors
-      )
-      .map(
-        (problem) =>
-          `${nameFromLevel[problem.level].toUpperCase()}: ${problem.msg}`
-      )
-  );
+  const repoProblems = extractRepoProblems(config);
   if (repoProblems.size) {
-    logger.debug(
-      { repoProblems: Array.from(repoProblems) },
-      'repository problems'
-    );
     newIssueBody += '## Repository problems\n\n';
     const repoProblemsHeader =
       config.customizeDashboard?.['repoProblemsHeader'] ??
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index 43dacba198..309d79ec84 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -19,6 +19,7 @@ import * as queue from '../../util/http/queue';
 import * as throttle from '../../util/http/throttle';
 import { addSplit, getSplits, splitInit } from '../../util/split';
 import { setBranchCache } from './cache';
+import { extractRepoProblems } from './common';
 import { ensureDependencyDashboard } from './dependency-dashboard';
 import handleError from './error';
 import { finalizeRepo } from './finalize';
@@ -63,6 +64,7 @@ export async function renovateRepository(
     if (config.semanticCommits === 'auto') {
       config.semanticCommits = await detectSemanticCommits();
     }
+
     if (
       GlobalConfig.get('dryRun') !== 'lookup' &&
       GlobalConfig.get('dryRun') !== 'extract'
@@ -71,7 +73,6 @@ export async function renovateRepository(
         ensureOnboardingPr(config, packageFiles, branches)
       );
       addSplit('onboarding');
-
       const res = await instrument('update', () =>
         updateRepo(config, branches)
       );
@@ -94,6 +95,7 @@ export async function renovateRepository(
       // TODO #22198
       repoResult = processResult(config, res!);
     }
+    printRepositoryProblems(config);
   } catch (err) /* istanbul ignore next */ {
     setMeta({ repository: config.repository });
     const errorRes = await handleError(config, err);
@@ -138,3 +140,13 @@ function emptyExtract(config: RenovateConfig): ExtractResult {
     packageFiles: {},
   };
 }
+
+export function printRepositoryProblems(config: RenovateConfig): void {
+  const repoProblems = extractRepoProblems(config);
+  if (repoProblems.size) {
+    logger.debug(
+      { repoProblems: Array.from(repoProblems) },
+      'repository problems'
+    );
+  }
+}
-- 
GitLab