From bcc1499eba9439e176bda95d32068b2129938ff7 Mon Sep 17 00:00:00 2001
From: Florian Greinacher <florian@greinacher.de>
Date: Thu, 17 Mar 2022 05:47:52 +0100
Subject: [PATCH] fix(kustomize): accept kustomization files without header
 (#14651)

---
 lib/modules/manager/kustomize/extract.spec.ts | 16 ++++++++++++++++
 lib/modules/manager/kustomize/extract.ts      |  2 ++
 lib/modules/manager/kustomize/readme.md       |  1 -
 lib/modules/manager/kustomize/types.ts        |  2 +-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lib/modules/manager/kustomize/extract.spec.ts b/lib/modules/manager/kustomize/extract.spec.ts
index c22b7628fc..29c11bf5ef 100644
--- a/lib/modules/manager/kustomize/extract.spec.ts
+++ b/lib/modules/manager/kustomize/extract.spec.ts
@@ -34,6 +34,22 @@ describe('modules/manager/kustomize/extract', () => {
     const file = parseKustomize('');
     expect(file).toBeNull();
   });
+  it('should return null when header has invalid resource kind', () => {
+    const file = parseKustomize(`
+      kind: NoKustomization
+      bases:
+      - github.com/fluxcd/flux/deploy?ref=1.19.0
+    `);
+    expect(file).toBeNull();
+  });
+  it('should fall back to default resource kind when header is missing', () => {
+    const file = parseKustomize(`
+      bases:
+      - github.com/fluxcd/flux/deploy?ref=1.19.0
+    `);
+    expect(file).not.toBeNull();
+    expect(file.kind).toBe('Kustomization');
+  });
   describe('extractBase', () => {
     it('should return null for a local base', () => {
       const res = extractResource('./service-1');
diff --git a/lib/modules/manager/kustomize/extract.ts b/lib/modules/manager/kustomize/extract.ts
index f5de3178f0..469bcc6a0a 100644
--- a/lib/modules/manager/kustomize/extract.ts
+++ b/lib/modules/manager/kustomize/extract.ts
@@ -133,6 +133,8 @@ export function parseKustomize(content: string): Kustomize | null {
     return null;
   }
 
+  pkg.kind ??= 'Kustomization';
+
   if (!['Kustomization', 'Component'].includes(pkg.kind)) {
     return null;
   }
diff --git a/lib/modules/manager/kustomize/readme.md b/lib/modules/manager/kustomize/readme.md
index 723b2cfa99..47185687d3 100644
--- a/lib/modules/manager/kustomize/readme.md
+++ b/lib/modules/manager/kustomize/readme.md
@@ -21,7 +21,6 @@ This manager uses three `depType`s to allow a fine-grained control of which depe
 
 **Limitations**
 
-- Needs to have `kind: Kustomization` or `kind: Component` defined
 - Currently this hasn't been tested using HTTPS to fetch the repos
 - The keys for the image tags can be in any order
 
diff --git a/lib/modules/manager/kustomize/types.ts b/lib/modules/manager/kustomize/types.ts
index 22e0ef5738..c42207daf5 100644
--- a/lib/modules/manager/kustomize/types.ts
+++ b/lib/modules/manager/kustomize/types.ts
@@ -12,7 +12,7 @@ export interface HelmChart {
 }
 
 export interface Kustomize {
-  kind: string;
+  kind?: string;
   bases?: string[]; // deprecated since kustomize v2.1.0
   resources?: string[];
   components?: string[];
-- 
GitLab