From aa9af7b41ca0524b37a9f5bbd9d5f3e7b742700f Mon Sep 17 00:00:00 2001 From: = Date: Sat, 12 Oct 2024 00:39:51 +0530 Subject: [PATCH] feat: added secret path to template and optional more arguments as json get secrets --- cli/packages/api/model.go | 2 ++ cli/packages/cmd/agent.go | 21 +++++++++++++++++---- cli/packages/models/cli.go | 1 + cli/packages/util/secrets.go | 3 ++- cli/secret-render-template | 4 ++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/cli/packages/api/model.go b/cli/packages/api/model.go index f954531e2..5d89bf3f0 100644 --- a/cli/packages/api/model.go +++ b/cli/packages/api/model.go @@ -587,6 +587,7 @@ type GetRawSecretsV3Response struct { SecretKey string `json:"secretKey"` SecretValue string `json:"secretValue"` SecretComment string `json:"secretComment"` + SecretPath string `json:"secretPath"` } `json:"secrets"` Imports []ImportedRawSecretV3 `json:"imports"` ETag string @@ -610,6 +611,7 @@ type GetRawSecretV3ByNameResponse struct { SecretKey string `json:"secretKey"` SecretValue string `json:"secretValue"` SecretComment string `json:"secretComment"` + SecretPath string `json:"secretPath"` } `json:"secret"` ETag string } diff --git a/cli/packages/cmd/agent.go b/cli/packages/cmd/agent.go index 118aca119..d2bff013b 100644 --- a/cli/packages/cmd/agent.go +++ b/cli/packages/cmd/agent.go @@ -7,6 +7,7 @@ import ( "bytes" "context" "encoding/base64" + "encoding/json" "fmt" "io/ioutil" "os" @@ -311,9 +312,22 @@ func ParseAgentConfig(configFile []byte) (*Config, error) { return config, nil } -func secretTemplateFunction(accessToken string, existingEtag string, currentEtag *string) func(string, string, string) ([]models.SingleEnvironmentVariable, error) { - return func(projectID, envSlug, secretPath string) ([]models.SingleEnvironmentVariable, error) { - res, err := util.GetPlainTextSecretsV3(accessToken, projectID, envSlug, secretPath, false, false, "") +type secretArguments struct { + IsRecursive bool `json:"recursive"` +} + +func secretTemplateFunction(accessToken string, existingEtag string, currentEtag *string) func(string, string, string, ...string) ([]models.SingleEnvironmentVariable, error) { + return func(projectID, envSlug, secretPath string, args ...string) ([]models.SingleEnvironmentVariable, error) { + var parsedArguments secretArguments + // to make it optional + if len(args) > 0 { + err := json.Unmarshal([]byte(args[0]), &parsedArguments) + if err != nil { + return nil, err + } + } + + res, err := util.GetPlainTextSecretsV3(accessToken, projectID, envSlug, secretPath, false, parsedArguments.IsRecursive, "") if err != nil { return nil, err } @@ -456,7 +470,6 @@ func ProcessLiteralTemplate(templateId int, templateString string, data interfac return &buf, nil } - type AgentManager struct { accessToken string accessTokenTTL time.Duration diff --git a/cli/packages/models/cli.go b/cli/packages/models/cli.go index 62ff07190..08e7c3957 100644 --- a/cli/packages/models/cli.go +++ b/cli/packages/models/cli.go @@ -30,6 +30,7 @@ type SingleEnvironmentVariable struct { Value string `json:"value"` Type string `json:"type"` ID string `json:"_id"` + SecretPath string `json:"secretPath"` Tags []struct { ID string `json:"_id"` Name string `json:"name"` diff --git a/cli/packages/util/secrets.go b/cli/packages/util/secrets.go index b6ec7f752..f375ad8aa 100644 --- a/cli/packages/util/secrets.go +++ b/cli/packages/util/secrets.go @@ -104,7 +104,7 @@ func GetPlainTextSecretsV3(accessToken string, workspaceId string, environmentNa plainTextSecrets := []models.SingleEnvironmentVariable{} for _, secret := range rawSecrets.Secrets { - plainTextSecrets = append(plainTextSecrets, models.SingleEnvironmentVariable{Key: secret.SecretKey, Value: secret.SecretValue, Type: secret.Type, WorkspaceId: secret.Workspace}) + plainTextSecrets = append(plainTextSecrets, models.SingleEnvironmentVariable{Key: secret.SecretKey, Value: secret.SecretValue, Type: secret.Type, WorkspaceId: secret.Workspace, SecretPath: secret.SecretPath}) } if includeImports { @@ -145,6 +145,7 @@ func GetSinglePlainTextSecretByNameV3(accessToken string, workspaceId string, en Type: rawSecret.Secret.Type, ID: rawSecret.Secret.ID, Comment: rawSecret.Secret.SecretComment, + SecretPath: rawSecret.Secret.SecretPath, } return formattedSecrets, rawSecret.ETag, nil diff --git a/cli/secret-render-template b/cli/secret-render-template index 32ab2331a..537b68e03 100644 --- a/cli/secret-render-template +++ b/cli/secret-render-template @@ -1,5 +1,5 @@ -{{- with secret "6553ccb2b7da580d7f6e7260" "dev" "/" }} +{{- with secret "ae06a663-2740-49c5-b998-bf4ceca2c120" "dev" "/" `{"recursive":true}` }} {{- range . }} {{ .Key }}={{ .Value }} {{- end }} -{{- end }} \ No newline at end of file +{{- end }}