From bf0e39da5fc7f4e7aec16ef95b15e421426537aa Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 21 Apr 2023 11:24:29 +0200
Subject: [PATCH] fix(ansible-galaxy): handle git source (#21640)

---
 lib/modules/manager/ansible-galaxy/collections.ts |  6 +++++-
 .../manager/ansible-galaxy/extract.spec.ts        | 15 +++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/lib/modules/manager/ansible-galaxy/collections.ts b/lib/modules/manager/ansible-galaxy/collections.ts
index 5b1380262f..83ba8e2d66 100644
--- a/lib/modules/manager/ansible-galaxy/collections.ts
+++ b/lib/modules/manager/ansible-galaxy/collections.ts
@@ -30,7 +30,11 @@ function interpretLine(
     }
     case 'source': {
       localDependency.managerData.source = value;
-      localDependency.registryUrls = value ? [value] : [];
+      if (value?.startsWith('git@')) {
+        localDependency.packageName = value;
+      } else {
+        localDependency.registryUrls = value ? [value] : [];
+      }
       break;
     }
     case 'type': {
diff --git a/lib/modules/manager/ansible-galaxy/extract.spec.ts b/lib/modules/manager/ansible-galaxy/extract.spec.ts
index 5f6fab0c36..0174d8d77f 100644
--- a/lib/modules/manager/ansible-galaxy/extract.spec.ts
+++ b/lib/modules/manager/ansible-galaxy/extract.spec.ts
@@ -38,6 +38,21 @@ describe('modules/manager/ansible-galaxy/extract', () => {
       expect(res?.deps[0].currentValue).toBe('1.1.3');
     });
 
+    it('extracts git@ dependencies', () => {
+      const yamlFile = codeBlock`collections:
+      - name: community.docker
+        source: git@github.com:ansible-collections/community.docker
+        type: git
+        version: 2.7.5`;
+      const res = extractPackageFile(yamlFile, 'requirements.yml');
+      expect(res?.deps).toHaveLength(1);
+      expect(res?.deps[0].currentValue).toBe('2.7.5');
+      expect(res?.deps[0].registryUrls).toBeUndefined();
+      expect(res?.deps[0].packageName).toBe(
+        'git@github.com:ansible-collections/community.docker'
+      );
+    });
+
     it('check if an empty file returns null', () => {
       const res = extractPackageFile('\n', 'requirements.yml');
       expect(res).toBeNull();
-- 
GitLab