From e8a297f13b163429e24729ce9d70d869612f47f1 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 15 Aug 2024 22:07:42 +0500 Subject: [PATCH] Support for kebab case and dot notation in permission generation tool (#3222) * support for fullstop and hypen in permissions.yaml * updated the readme. --- pkg/analyzer/README.md | 5 ++++- pkg/analyzer/generate_permissions/generate_permissions.go | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/analyzer/README.md b/pkg/analyzer/README.md index 3c9a4c9b7..a7efc5522 100644 --- a/pkg/analyzer/README.md +++ b/pkg/analyzer/README.md @@ -2,7 +2,10 @@ ## Defining the Permissions -Permissions are defined in lower snake case as `permission_name:access_level`. +Permissions can be defined in: +- lower snake case as `permission_name:access_level` +- kebab case as `permission-name:read` +- dot notation as `permission.name:read` The Permissions are initially defined as a [yaml file](analyzers/twilio/permissions.yaml). diff --git a/pkg/analyzer/generate_permissions/generate_permissions.go b/pkg/analyzer/generate_permissions/generate_permissions.go index 870cb0673..c26b61e41 100644 --- a/pkg/analyzer/generate_permissions/generate_permissions.go +++ b/pkg/analyzer/generate_permissions/generate_permissions.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "os" + "regexp" "strings" "text/template" @@ -95,7 +96,7 @@ func ToCamelCase(s string) string { parts := strings.Split(s, ":") caser := cases.Title(language.English) for i := range parts { - subParts := strings.Split(parts[i], "_") + subParts := regexp.MustCompile(`[\_\.\-]+`).Split(parts[i], -1) for j := range subParts { subParts[j] = caser.String(subParts[j]) }