From 0f41590d6adccc4b13bb6d126f386aeee564780c Mon Sep 17 00:00:00 2001
From: Grraahaam <72856427+Grraahaam@users.noreply.github.com>
Date: Thu, 8 Feb 2024 17:32:31 +0100
Subject: [PATCH 1/5] feat(cli): --plain, --expand, --include-imports in
'secrets get' subcommand
---
cli/packages/cmd/secrets.go | 49 ++++++++++++++++++++++++++++++++++---
1 file changed, 45 insertions(+), 4 deletions(-)
diff --git a/cli/packages/cmd/secrets.go b/cli/packages/cmd/secrets.go
index 778ac574e..e4e0db126 100644
--- a/cli/packages/cmd/secrets.go
+++ b/cli/packages/cmd/secrets.go
@@ -68,6 +68,11 @@ var secretsCmd = &cobra.Command{
util.HandleError(err, "Unable to parse flag")
}
+ plainOutput, err := cmd.Flags().GetBool("plain")
+ if err != nil {
+ util.HandleError(err, "Unable to parse flag")
+ }
+
secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath, IncludeImport: includeImports}, "")
if err != nil {
util.HandleError(err)
@@ -83,7 +88,14 @@ var secretsCmd = &cobra.Command{
secrets = util.ExpandSecrets(secrets, infisicalToken, "")
}
- visualize.PrintAllSecretDetails(secrets)
+ if plainOutput {
+ for _, secret := range secrets {
+ fmt.Println(secret.Value)
+ }
+ } else {
+ visualize.PrintAllSecretDetails(secrets)
+ }
+
Telemetry.CaptureEvent("cli-command:secrets", posthog.NewProperties().Set("secretCount", len(secrets)).Set("version", util.CLI_VERSION))
},
}
@@ -406,11 +418,30 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
util.HandleError(err, "Unable to parse path flag")
}
- secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath}, "")
+ plainOutput, err := cmd.Flags().GetBool("plain")
+ if err != nil {
+ util.HandleError(err, "Unable to parse flag")
+ }
+
+ includeImports, err := cmd.Flags().GetBool("include-imports")
+ if err != nil {
+ util.HandleError(err, "Unable to parse flag")
+ }
+
+ shouldExpandSecrets, err := cmd.Flags().GetBool("expand")
+ if err != nil {
+ util.HandleError(err)
+ }
+
+ secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath, IncludeImport: includeImports}, "")
if err != nil {
util.HandleError(err, "To fetch all secrets")
}
+ if shouldExpandSecrets {
+ secrets = util.ExpandSecrets(secrets, infisicalToken, "")
+ }
+
requestedSecrets := []models.SingleEnvironmentVariable{}
secretsMap := getSecretsByKeys(secrets)
@@ -427,7 +458,13 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
}
}
- visualize.PrintAllSecretDetails(requestedSecrets)
+ if plainOutput {
+ for _, secret := range requestedSecrets {
+ fmt.Println(secret.Value)
+ }
+ } else {
+ visualize.PrintAllSecretDetails(requestedSecrets)
+ }
Telemetry.CaptureEvent("cli-command:secrets get", posthog.NewProperties().Set("secretCount", len(secrets)).Set("version", util.CLI_VERSION))
}
@@ -661,6 +698,9 @@ func init() {
secretsGetCmd.Flags().String("token", "", "Fetch secrets using the Infisical Token")
secretsCmd.AddCommand(secretsGetCmd)
secretsGetCmd.Flags().String("path", "/", "get secrets within a folder path")
+ secretsGetCmd.Flags().Bool("plain", false, "print values without formatting, one per line")
+ secretsGetCmd.Flags().Bool("include-imports", true, "Imported linked secrets ")
+ secretsGetCmd.Flags().Bool("expand", true, "Parse shell parameter expansions in your secrets, and process your referenced secrets")
secretsCmd.Flags().Bool("secret-overriding", true, "Prioritizes personal secrets, if any, with the same name over shared secrets")
secretsCmd.AddCommand(secretsSetCmd)
@@ -703,9 +743,10 @@ func init() {
secretsCmd.Flags().String("token", "", "Fetch secrets using the Infisical Token")
secretsCmd.PersistentFlags().String("env", "dev", "Used to select the environment name on which actions should be taken on")
- secretsCmd.Flags().Bool("expand", true, "Parse shell parameter expansions in your secrets")
+ secretsCmd.Flags().Bool("expand", true, "Parse shell parameter expansions in your secrets, and process your referenced secrets")
secretsCmd.Flags().Bool("include-imports", true, "Imported linked secrets ")
secretsCmd.PersistentFlags().StringP("tags", "t", "", "filter secrets by tag slugs")
secretsCmd.Flags().String("path", "/", "get secrets within a folder path")
+ secretsCmd.Flags().Bool("plain", false, "print values without formatting, one per line")
rootCmd.AddCommand(secretsCmd)
}
From f83c2215a579da9519fc1051774bb7c9de8a5a01 Mon Sep 17 00:00:00 2001
From: Grraahaam <72856427+Grraahaam@users.noreply.github.com>
Date: Thu, 8 Feb 2024 17:44:55 +0100
Subject: [PATCH 2/5] doc(cli): --plain
---
docs/cli/commands/secrets.mdx | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/docs/cli/commands/secrets.mdx b/docs/cli/commands/secrets.mdx
index 8e2183ad9..08e858e9d 100644
--- a/docs/cli/commands/secrets.mdx
+++ b/docs/cli/commands/secrets.mdx
@@ -59,6 +59,14 @@ This command enables you to perform CRUD (create, read, update, delete) operatio
infisical secrets --path="/" --env=dev
```
+
+ The `--plain` flag will output all your secret values without formatting, one per line.
+
+ ```bash
+ # Example
+ infisical secrets --plain
+ ```
+
@@ -70,6 +78,7 @@ This command enables you to perform CRUD (create, read, update, delete) operatio
# Example
$ infisical secrets get DOMAIN
+$ infisical secrets get DOMAIN PORT
```
@@ -79,6 +88,17 @@ This command enables you to perform CRUD (create, read, update, delete) operatio
Default value: `dev`
+
+ The `--plain` flag will output all your requested secret values without formatting, one per line.
+
+ ```bash
+ # Example
+ infisical secrets get FOO --plain
+
+ # Fetch a single value and assign it to a variable
+ API_KEY=$(infisical secrets get FOO --plain)
+ ```
+
From 637b0b955fe7b6702fcedee001e5e857f96e7d60 Mon Sep 17 00:00:00 2001
From: Grraahaam <72856427+Grraahaam@users.noreply.github.com>
Date: Fri, 24 May 2024 17:28:52 +0200
Subject: [PATCH 3/5] fix(cli): add backward compatibility for --raw-value
---
cli/packages/cmd/secrets.go | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/cli/packages/cmd/secrets.go b/cli/packages/cmd/secrets.go
index 90239deeb..c3cec597a 100644
--- a/cli/packages/cmd/secrets.go
+++ b/cli/packages/cmd/secrets.go
@@ -470,10 +470,10 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
util.HandleError(err, "Unable to parse recursive flag")
}
- //deprecated (showOnlyValue) in favor of --plain
+ // deprecated, in favor of --plain
showOnlyValue, err := cmd.Flags().GetBool("raw-value")
if err != nil {
- util.HandleError(err, "Unable to parse path flag")
+ util.HandleError(err, "Unable to parse flag")
}
plainOutput, err := cmd.Flags().GetBool("plain")
@@ -533,7 +533,8 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
}
}
- if plainOutput {
+ // showOnlyValue deprecated in favor of --plain, below only for backward compatibility
+ if plainOutput || showOnlyValue {
for _, secret := range requestedSecrets {
fmt.Println(secret.Value)
}
@@ -541,16 +542,6 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
visualize.PrintAllSecretDetails(requestedSecrets)
}
- // deprecated (showOnlyValue)
- if showOnlyValue && len(requestedSecrets) > 1 {
- util.PrintErrorMessageAndExit("--raw-value only works with one secret.")
- }
-
- if showOnlyValue {
- fmt.Printf(requestedSecrets[0].Value)
- } else {
- visualize.PrintAllSecretDetails(requestedSecrets)
- }
Telemetry.CaptureEvent("cli-command:secrets get", posthog.NewProperties().Set("secretCount", len(secrets)).Set("version", util.CLI_VERSION))
}
From f9a959965916909471261a97c5cbc1dc656dc95c Mon Sep 17 00:00:00 2001
From: Grraahaam <72856427+Grraahaam@users.noreply.github.com>
Date: Fri, 24 May 2024 17:29:44 +0200
Subject: [PATCH 4/5] doc(cli): improve --plain example
---
docs/cli/commands/secrets.mdx | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/docs/cli/commands/secrets.mdx b/docs/cli/commands/secrets.mdx
index 81fa4de4c..941820227 100644
--- a/docs/cli/commands/secrets.mdx
+++ b/docs/cli/commands/secrets.mdx
@@ -106,8 +106,8 @@ $ infisical secrets
```bash
$ infisical secrets get ...
- # Example
- $ infisical secrets get DOMAIN
+# Example
+$ infisical secrets get DOMAIN
$ infisical secrets get DOMAIN PORT
```
@@ -124,9 +124,12 @@ $ infisical secrets get DOMAIN PORT
The `--plain` flag will output all your requested secret values without formatting, one per line.
+ Default value: `false`
+
```bash
# Example
infisical secrets get FOO --plain
+ infisical secrets get FOO BAR --plain
# Fetch a single value and assign it to a variable
API_KEY=$(infisical secrets get FOO --plain)
From 2160c66e209b7c40b19ebcf739af40dd2a4e08f2 Mon Sep 17 00:00:00 2001
From: Grraahaam <72856427+Grraahaam@users.noreply.github.com>
Date: Thu, 20 Jun 2024 09:15:19 +0200
Subject: [PATCH 5/5] doc(cli): improve --plain example + add --silent notice
---
docs/cli/commands/secrets.mdx | 34 ++++++++++++++++++++++++++++++----
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/docs/cli/commands/secrets.mdx b/docs/cli/commands/secrets.mdx
index 7428a84a1..03ebde1c0 100644
--- a/docs/cli/commands/secrets.mdx
+++ b/docs/cli/commands/secrets.mdx
@@ -93,11 +93,23 @@ $ infisical secrets
```bash
# Example
- infisical secrets --plain
+ infisical secrets --plain --silent
```
+
+ The `--silent` flag disables output of tip/info messages. Useful when running in scripts or CI/CD pipelines.
+
+ ```bash
+ # Example
+ infisical secrets --silent
+ ```
+
+ Can be used inline to replace `INFISICAL_DISABLE_UPDATE_CHECK`
+
+
+
@@ -132,16 +144,30 @@ $ infisical secrets get DOMAIN PORT
infisical secrets get FOO BAR --plain
# Fetch a single value and assign it to a variable
- API_KEY=$(infisical secrets get FOO --plain)
+ API_KEY=$(infisical secrets get FOO --plain --silent)
```
- When running in CI/CD environments or in a script, set `INFISICAL_DISABLE_UPDATE_CHECK` env to `true`. This will help hide any CLI update messages and only show the secret value.
+ When running in CI/CD environments or in a script, set `INFISICAL_DISABLE_UPDATE_CHECK=true` or add the `--silent` flag. This will help hide any CLI info/debug output and only show the secret value.
+
+ The `--silent` flag disables output of tip/info messages. Useful when running in scripts or CI/CD pipelines.
+
+ ```bash
+ # Example
+ infisical secrets get FOO --plain --silent
+ ```
+
+ Can be used inline to replace `INFISICAL_DISABLE_UPDATE_CHECK`
+
+
+
+ Use `--plain` instead, as it supports single and multiple secrets.
+
Used to print the plain value of a single requested secret without any table style.
Default value: `false`
@@ -149,7 +175,7 @@ $ infisical secrets get DOMAIN PORT
Example: `infisical secrets get DOMAIN --raw-value`
- When running in CI/CD environments or in a script, set `INFISICAL_DISABLE_UPDATE_CHECK` env to `true`. This will help hide any CLI update messages and only show the secret value.
+ When running in CI/CD environments or in a script, set `INFISICAL_DISABLE_UPDATE_CHECK=true` or add the `--silent` flag. This will help hide any CLI info/debug output and only show the secret value.