Cmd changes to add regex support
Added support to accept regex parameter as part of `airshipctl secret generate encryptionkey` command. This allows user to pass regex parameter so that the passphrase generated matches the regex. Relates-To: #398 Change-Id: I3914e6a896bb669e3974fe67c466336e15989a8d
This commit is contained in:
parent
1918421ae8
commit
07b66906ad
@ -19,20 +19,55 @@ import (
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"opendev.org/airship/airshipctl/pkg/errors"
|
||||
"opendev.org/airship/airshipctl/pkg/secret/generate"
|
||||
)
|
||||
|
||||
const (
|
||||
cmdLong = `
|
||||
Generates a secure encryption key or passphrase.
|
||||
|
||||
If regex arguments are passed the encryption key created would match the regular expression passed.
|
||||
`
|
||||
|
||||
cmdExample = `
|
||||
# Generates a secure encryption key or passphrase.
|
||||
airshipctl secret generate encryptionkey
|
||||
|
||||
# Generates a secure encryption key or passphrase matching the regular expression
|
||||
airshipctl secret generate encryptionkey \
|
||||
--regex Xy[a-c][0-9]!a*
|
||||
`
|
||||
)
|
||||
|
||||
// NewGenerateEncryptionKeyCommand creates a new command for generating secret information
|
||||
func NewGenerateEncryptionKeyCommand() *cobra.Command {
|
||||
var regex string
|
||||
var limit int
|
||||
|
||||
encryptionKeyCmd := &cobra.Command{
|
||||
Use: "encryptionkey",
|
||||
Short: "Generates a secure encryption key or passphrase",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
Use: "encryptionkey",
|
||||
Short: "Generates a secure encryption key or passphrase",
|
||||
Long: cmdLong[1:],
|
||||
Example: cmdExample,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
if cmd.Flags().Changed("limit") && !cmd.Flags().Changed("regex") {
|
||||
return fmt.Errorf("Required Regex flag with limit option")
|
||||
}
|
||||
if cmd.Flags().Changed("regex") && cmd.Flags().Changed("limit") {
|
||||
return errors.ErrNotImplemented{What: "Regex support not implemented yet!"}
|
||||
}
|
||||
engine := generate.NewEncryptionKeyEngine(nil)
|
||||
encryptionKey := engine.GenerateEncryptionKey()
|
||||
fmt.Fprintln(cmd.OutOrStdout(), encryptionKey)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
encryptionKeyCmd.Flags().StringVar(®ex, "regex", "",
|
||||
"Regular expression string")
|
||||
|
||||
encryptionKeyCmd.Flags().IntVar(&limit, "limit", 5,
|
||||
"Limit number of characters for + or * regex")
|
||||
return encryptionKeyCmd
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
package encryptionkey_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"opendev.org/airship/airshipctl/cmd/secret/generate/encryptionkey"
|
||||
@ -28,6 +29,12 @@ func TestGenerateEncryptionKey(t *testing.T) {
|
||||
CmdLine: "--help",
|
||||
Cmd: encryptionkey.NewGenerateEncryptionKeyCommand(),
|
||||
},
|
||||
{
|
||||
Name: "generate-encryptionkey-cmd-error",
|
||||
CmdLine: "--limit 10",
|
||||
Error: fmt.Errorf("Required Regex flag with limit option"),
|
||||
Cmd: encryptionkey.NewGenerateEncryptionKeyCommand(),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range cmdTests {
|
||||
|
@ -0,0 +1,19 @@
|
||||
Error: Required Regex flag with limit option
|
||||
Usage:
|
||||
encryptionkey [flags]
|
||||
|
||||
Examples:
|
||||
|
||||
# Generates a secure encryption key or passphrase.
|
||||
airshipctl secret generate encryptionkey
|
||||
|
||||
# Generates a secure encryption key or passphrase matching the regular expression
|
||||
airshipctl secret generate encryptionkey \
|
||||
--regex Xy[a-c][0-9]!a*
|
||||
|
||||
|
||||
Flags:
|
||||
-h, --help help for encryptionkey
|
||||
--limit int Limit number of characters for + or * regex (default 5)
|
||||
--regex string Regular expression string
|
||||
|
@ -1,7 +1,21 @@
|
||||
Generates a secure encryption key or passphrase
|
||||
Generates a secure encryption key or passphrase.
|
||||
|
||||
If regex arguments are passed the encryption key created would match the regular expression passed.
|
||||
|
||||
Usage:
|
||||
encryptionkey [flags]
|
||||
|
||||
Examples:
|
||||
|
||||
# Generates a secure encryption key or passphrase.
|
||||
airshipctl secret generate encryptionkey
|
||||
|
||||
# Generates a secure encryption key or passphrase matching the regular expression
|
||||
airshipctl secret generate encryptionkey \
|
||||
--regex Xy[a-c][0-9]!a*
|
||||
|
||||
|
||||
Flags:
|
||||
-h, --help help for encryptionkey
|
||||
-h, --help help for encryptionkey
|
||||
--limit int Limit number of characters for + or * regex (default 5)
|
||||
--regex string Regular expression string
|
||||
|
@ -4,16 +4,34 @@ Generates a secure encryption key or passphrase
|
||||
|
||||
### Synopsis
|
||||
|
||||
Generates a secure encryption key or passphrase
|
||||
Generates a secure encryption key or passphrase.
|
||||
|
||||
If regex arguments are passed the encryption key created would match the regular expression passed.
|
||||
|
||||
|
||||
```
|
||||
airshipctl secret generate encryptionkey [flags]
|
||||
```
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
|
||||
# Generates a secure encryption key or passphrase.
|
||||
airshipctl secret generate encryptionkey
|
||||
|
||||
# Generates a secure encryption key or passphrase matching the regular expression
|
||||
airshipctl secret generate encryptionkey \
|
||||
--regex Xy[a-c][0-9]!a*
|
||||
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for encryptionkey
|
||||
-h, --help help for encryptionkey
|
||||
--limit int Limit number of characters for + or * regex (default 5)
|
||||
--regex string Regular expression string
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
Loading…
x
Reference in New Issue
Block a user