From 5f195e9d4f199407159e7c45d4539de68fa905d3 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 27 Feb 2021 07:00:02 +0100
Subject: [PATCH] fix: merge labels and addLabels in groups

---
 .../__snapshots__/generate.spec.ts.snap       | 19 +++++++++++++++++++
 .../repository/updates/generate.spec.ts       |  3 +++
 lib/workers/repository/updates/generate.ts    | 15 +++++++++++++++
 3 files changed, 37 insertions(+)

diff --git a/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap b/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
index d81572216e..3edd2548a9 100644
--- a/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
+++ b/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
@@ -8,6 +8,7 @@ exports[`workers/repository/updates/generate generateBranchConfig() adds commit
 
 exports[`workers/repository/updates/generate generateBranchConfig() handles @types specially (reversed) 1`] = `
 Object {
+  "addLabels": Array [],
   "automerge": false,
   "blockedByPin": false,
   "branchName": "some-branch",
@@ -18,6 +19,11 @@ Object {
   "dependencyDashboardPrApproval": false,
   "displayFrom": "",
   "displayTo": "0.6.0",
+  "labels": Array [
+    "a",
+    "c",
+    "b",
+  ],
   "newValue": "0.6.0",
   "prTitle": "some-title",
   "prettyDepType": "dependency",
@@ -30,6 +36,10 @@ Object {
       "depName": "some-dep",
       "displayFrom": "",
       "displayTo": "0.6.0",
+      "labels": Array [
+        "a",
+        "c",
+      ],
       "newValue": "0.6.0",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
@@ -42,6 +52,10 @@ Object {
       "depName": "some-dep",
       "displayFrom": "",
       "displayTo": "1.0.0",
+      "labels": Array [
+        "a",
+        "b",
+      ],
       "newValue": "1.0.0",
       "prTitle": "some-other-title",
       "prettyDepType": "dependency",
@@ -52,6 +66,9 @@ Object {
       "depName": "@types/some-dep",
       "displayFrom": "",
       "displayTo": "0.5.7",
+      "labels": Array [
+        "a",
+      ],
       "newValue": "0.5.7",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
@@ -62,6 +79,7 @@ Object {
 
 exports[`workers/repository/updates/generate generateBranchConfig() handles @types specially 1`] = `
 Object {
+  "addLabels": Array [],
   "automerge": false,
   "blockedByPin": false,
   "branchName": "some-branch",
@@ -81,6 +99,7 @@ Object {
   "displayTo": "0.6.0",
   "hasTypes": true,
   "isRange": false,
+  "labels": Array [],
   "newValue": "0.6.0",
   "prTitle": "some-title",
   "prettyDepType": "dependency",
diff --git a/lib/workers/repository/updates/generate.spec.ts b/lib/workers/repository/updates/generate.spec.ts
index 5b44215c0d..fcb8a8af38 100644
--- a/lib/workers/repository/updates/generate.spec.ts
+++ b/lib/workers/repository/updates/generate.spec.ts
@@ -408,6 +408,7 @@ describe('workers/repository/updates/generate', () => {
           branchName: 'some-branch',
           prTitle: 'some-title',
           newValue: '0.6.0',
+          labels: ['a', 'c'],
           group: {},
         },
         {
@@ -418,6 +419,7 @@ describe('workers/repository/updates/generate', () => {
           branchName: 'some-branch',
           prTitle: 'some-other-title',
           newValue: '1.0.0',
+          labels: ['a', 'b'],
           group: {},
         },
         {
@@ -426,6 +428,7 @@ describe('workers/repository/updates/generate', () => {
           branchName: 'some-branch',
           prTitle: 'some-title',
           newValue: '0.5.7',
+          labels: ['a'],
           group: {},
         },
       ];
diff --git a/lib/workers/repository/updates/generate.ts b/lib/workers/repository/updates/generate.ts
index c6792de35c..e3a01c5628 100644
--- a/lib/workers/repository/updates/generate.ts
+++ b/lib/workers/repository/updates/generate.ts
@@ -305,6 +305,21 @@ export function generateBranchConfig(
     (upgrade) => upgrade.prCreation === 'approval'
   );
   config.automerge = config.upgrades.every((upgrade) => upgrade.automerge);
+  // combine all labels
+  config.labels = [
+    ...new Set(
+      config.upgrades
+        .map((upgrade) => upgrade.labels || [])
+        .reduce((a, b) => a.concat(b), [])
+    ),
+  ];
+  config.addLabels = [
+    ...new Set(
+      config.upgrades
+        .map((upgrade) => upgrade.addLabels || [])
+        .reduce((a, b) => a.concat(b), [])
+    ),
+  ];
   config.blockedByPin = config.upgrades.every(
     (upgrade) => upgrade.blockedByPin
   );
-- 
GitLab