From 1851938a9afb7033665eee6563d040266791624a Mon Sep 17 00:00:00 2001 From: Aatman Date: Wed, 8 Sep 2021 22:24:47 +0530 Subject: [PATCH] fix: only remove first occurence of kind (#8) --- .../.snapshots/kube2cdk8s-TestKube2CDK8SRole | 20 +++++++++++ pkg/kube2cdk8s/kube2cdk8s.go | 13 +++++-- pkg/kube2cdk8s/kube2cdk8s_test.go | 36 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 pkg/kube2cdk8s/.snapshots/kube2cdk8s-TestKube2CDK8SRole diff --git a/pkg/kube2cdk8s/.snapshots/kube2cdk8s-TestKube2CDK8SRole b/pkg/kube2cdk8s/.snapshots/kube2cdk8s-TestKube2CDK8SRole new file mode 100644 index 0000000..becee79 --- /dev/null +++ b/pkg/kube2cdk8s/.snapshots/kube2cdk8s-TestKube2CDK8SRole @@ -0,0 +1,20 @@ +new k8s.KubeRoleBinding(this, "argocd-application-controller", { + metadata: { + labels: { + "app.kubernetes.io/component": "application-controller", + "app.kubernetes.io/name": "argocd-application-controller", + "app.kubernetes.io/part-of": "argocd", + }, + name: "argocd-application-controller", + }, + roleRef: { + apiGroup: "rbac.authorization.k8s.io", + kind: "Role", + name: "argocd-application-controller", + }, + subjects: [{ + kind: "ServiceAccount", + name: "argocd-application-controller", + }], +}); + diff --git a/pkg/kube2cdk8s/kube2cdk8s.go b/pkg/kube2cdk8s/kube2cdk8s.go index cee1e18..83a08c5 100644 --- a/pkg/kube2cdk8s/kube2cdk8s.go +++ b/pkg/kube2cdk8s/kube2cdk8s.go @@ -52,9 +52,18 @@ func Kube2CDK8S(filePath string) (string, error) { res := re.ReplaceAllString(output, name) re2 := regexp.MustCompile("(?m)[\r\n]+^.*apiVersion.*$") - res2 := re2.ReplaceAllString(res, "") + loc := re2.FindStringIndex(res) + res2 := res + if loc != nil { + res2 = res[:loc[0]] + res[loc[1]:] + } + re3 := regexp.MustCompile("(?m)[\r\n]+^.*kind.*$") - res3 := re3.ReplaceAllString(res2, "") + loc = re3.FindStringIndex(res2) + res3 := res2 + if loc != nil { + res3 = res2[:loc[0]] + res2[loc[1]:] + } defer os.Remove(path) diff --git a/pkg/kube2cdk8s/kube2cdk8s_test.go b/pkg/kube2cdk8s/kube2cdk8s_test.go index 713db8d..a4b60ff 100644 --- a/pkg/kube2cdk8s/kube2cdk8s_test.go +++ b/pkg/kube2cdk8s/kube2cdk8s_test.go @@ -277,3 +277,39 @@ spec: defer os.Remove(deploymentFile.Name()) } + +func TestKube2CDK8SRole(t *testing.T) { + + role := `apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app.kubernetes.io/component: application-controller + app.kubernetes.io/name: argocd-application-controller + app.kubernetes.io/part-of: argocd + name: argocd-application-controller +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: argocd-application-controller +subjects: +- kind: ServiceAccount + name: argocd-application-controller +` + roleFile, err := util.CreateTempFile([]byte(role)) + if err != nil { + log.Println(err.Error()) + } + + d, err := Kube2CDK8S(roleFile.Name()) + if err != nil { + log.Println(err.Error()) + } + + err = cupaloy.Snapshot(d) + if err != nil { + t.Error(err.Error()) + } + + defer os.Remove(roleFile.Name()) +}