mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 07:27:43 +00:00
Merge pull request #3316 from Infisical/feat/addFileContentToArgValueCLI
Add file support to secrets set key=value command
This commit is contained in:
@@ -5,6 +5,7 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -139,7 +140,7 @@ var secretsGenerateExampleEnvCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var secretsSetCmd = &cobra.Command{
|
var secretsSetCmd = &cobra.Command{
|
||||||
Example: `secrets set <secretName=secretValue> <secretName=secretValue>..."`,
|
Example: `secrets set <secretName=secretValue> <secretName=secretValue> <secretName=@/path/to/file>..."`,
|
||||||
Short: "Used set secrets",
|
Short: "Used set secrets",
|
||||||
Use: "set [secrets]",
|
Use: "set [secrets]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
@@ -185,6 +186,30 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
util.HandleError(err, "Unable to parse secret type")
|
util.HandleError(err, "Unable to parse secret type")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
processedArgs := []string{}
|
||||||
|
for _, arg := range args {
|
||||||
|
splitKeyValue := strings.SplitN(arg, "=", 2)
|
||||||
|
if len(splitKeyValue) != 2 {
|
||||||
|
util.HandleError(fmt.Errorf("invalid argument format: %s. Expected format: key=value or key=@filepath", arg), "")
|
||||||
|
}
|
||||||
|
|
||||||
|
key := splitKeyValue[0]
|
||||||
|
value := splitKeyValue[1]
|
||||||
|
|
||||||
|
if strings.HasPrefix(value, "\\@") {
|
||||||
|
value = "@" + value[2:]
|
||||||
|
} else if strings.HasPrefix(value, "@") {
|
||||||
|
filePath := strings.TrimPrefix(value, "@")
|
||||||
|
content, err := os.ReadFile(filePath)
|
||||||
|
if err != nil {
|
||||||
|
util.HandleError(err, fmt.Sprintf("Unable to read file %s", filePath))
|
||||||
|
}
|
||||||
|
value = string(content)
|
||||||
|
}
|
||||||
|
|
||||||
|
processedArgs = append(processedArgs, fmt.Sprintf("%s=%s", key, value))
|
||||||
|
}
|
||||||
|
|
||||||
file, err := cmd.Flags().GetString("file")
|
file, err := cmd.Flags().GetString("file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
@@ -216,7 +241,7 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
util.PrintErrorMessageAndExit("Your login session has expired, please run [infisical login] and try again")
|
util.PrintErrorMessageAndExit("Your login session has expired, please run [infisical login] and try again")
|
||||||
}
|
}
|
||||||
|
|
||||||
secretOperations, err = util.SetRawSecrets(args, secretType, environmentName, secretsPath, projectId, &models.TokenDetails{
|
secretOperations, err = util.SetRawSecrets(processedArgs, secretType, environmentName, secretsPath, projectId, &models.TokenDetails{
|
||||||
Type: "",
|
Type: "",
|
||||||
Token: loggedInUserDetails.UserCredentials.JTWToken,
|
Token: loggedInUserDetails.UserCredentials.JTWToken,
|
||||||
}, file)
|
}, file)
|
||||||
|
|||||||
@@ -186,12 +186,28 @@ This command allows you to set or update secrets in your environment. If the sec
|
|||||||
If the secret key does not exist, a new secret will be created using both the key and value provided.
|
If the secret key does not exist, a new secret will be created using both the key and value provided.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ infisical secrets set <key1=value1> <key2=value2>...
|
$ infisical secrets set <key1=value1> <key2=value2> <key3=@/path/to/file>...
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
$ infisical secrets set STRIPE_API_KEY=sjdgwkeudyjwe DOMAIN=example.com HASH=jebhfbwe
|
$ infisical secrets set STRIPE_API_KEY=sjdgwkeudyjwe DOMAIN=example.com HASH=jebhfbwe [email protected]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<Tip>
|
||||||
|
When setting secret values:
|
||||||
|
- Use `secretName=@path/to/file` to load the secret value from a file
|
||||||
|
- Use `secretName=\@value` if you need the literal '@' character at the beginning of your value
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set a secret with the value loaded from a certificate file
|
||||||
|
$ secrets set CERTIFICATE=@/path/to/certificate.pem
|
||||||
|
|
||||||
|
# Set a secret with the literal value "@example.com"
|
||||||
|
$ secrets set email="\@example.com"
|
||||||
|
```
|
||||||
|
</Tip>
|
||||||
|
|
||||||
### Flags
|
### Flags
|
||||||
|
|
||||||
<Accordion title="--env">
|
<Accordion title="--env">
|
||||||
|
|||||||
Reference in New Issue
Block a user