Skip to content

Commit

Permalink
adding support for multi-query env search
Browse files Browse the repository at this point in the history
  • Loading branch information
shibme committed Mar 6, 2024
1 parent d77603f commit 2fbd6ab
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 28 deletions.
18 changes: 10 additions & 8 deletions cli/internal/commands/cmdenv/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,24 +185,26 @@ func envListSearchCommand() *cobra.Command {
if err != nil {
utils.ExitOnError(err)
}
query := cmd.Flag(EnvSearchFlag.Name).Value.String()
var envs []*environments.Environment
if query != "" {
envs, err = profile.SearchEnvs(query)
} else {
envs, err = profile.ListEnvs()
}
queries, err := cmd.Flags().GetStringSlice(EnvSearchFlag.Name)
if err != nil {
utils.ExitOnError(err)
}
var envs []*environments.Environment
for _, query := range queries {
result, err := profile.SearchEnvs(query)
if err != nil {
utils.ExitOnError(err)
}
envs = append(envs, result...)
}
for _, env := range envs {
utils.ShowEnv(*env, false, false)
fmt.Println()
}
utils.SafeExit()
},
}
envListSearchCmd.Flags().StringP(EnvSearchFlag.Name, EnvSearchFlag.Shorthand, "", EnvSearchFlag.Usage)
envListSearchCmd.Flags().StringSliceP(EnvSearchFlag.Name, EnvSearchFlag.Shorthand, []string{}, EnvSearchFlag.Usage)
return envListSearchCmd
}

Expand Down
18 changes: 12 additions & 6 deletions cli/internal/commands/cmdvault/access.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,12 @@ func vaultAccessAddCommand() *cobra.Command {
if err != nil {
utils.ExitOnError(err)
}
query := cmd.Flag(cmdenv.EnvSearchFlag.Name).Value.String()
queries, err := cmd.Flags().GetStringSlice(cmdenv.EnvSearchFlag.Name)
if err != nil {
utils.ExitOnError(err)
}
selfEnv, _ := cmd.Flags().GetBool(cmdenv.EnvSelfFlag.Name)
publicKeys, _, err := getPublicKeys(publicKeyStrings, query, selfEnv)
publicKeys, _, err := getPublicKeys(publicKeyStrings, queries, selfEnv)
if err != nil {
utils.ExitOnError(err)
}
Expand All @@ -71,7 +74,7 @@ func vaultAccessAddCommand() *cobra.Command {
},
}
vaultAccessAddCmd.Flags().StringSliceP(vaultAccessPublicKeysFlag.Name, vaultAccessPublicKeysFlag.Shorthand, []string{}, vaultAccessPublicKeysFlag.Usage)
vaultAccessAddCmd.Flags().StringP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, "", cmdenv.EnvSearchFlag.Usage)
vaultAccessAddCmd.Flags().StringSliceP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, []string{}, cmdenv.EnvSearchFlag.Usage)
vaultAccessAddCmd.Flags().BoolP(cmdenv.EnvSelfFlag.Name, cmdenv.EnvSelfFlag.Shorthand, false, cmdenv.EnvSelfFlag.Usage)
return vaultAccessAddCmd
}
Expand All @@ -90,9 +93,12 @@ func vaultAccessRemoveCommand() *cobra.Command {
if err != nil {
utils.ExitOnError(err)
}
query := cmd.Flag(cmdenv.EnvSearchFlag.Name).Value.String()
queries, err := cmd.Flags().GetStringSlice(cmdenv.EnvSearchFlag.Name)
if err != nil {
utils.ExitOnError(err)
}
selfEnv, _ := cmd.Flags().GetBool(cmdenv.EnvSelfFlag.Name)
publicKeys, _, err := getPublicKeys(publicKeyStrings, query, selfEnv)
publicKeys, _, err := getPublicKeys(publicKeyStrings, queries, selfEnv)
if err != nil {
utils.ExitOnError(err)
}
Expand All @@ -113,7 +119,7 @@ func vaultAccessRemoveCommand() *cobra.Command {
},
}
vaultAccessRemoveCmd.Flags().StringSliceP(vaultAccessPublicKeysFlag.Name, vaultAccessPublicKeysFlag.Shorthand, []string{}, vaultAccessPublicKeysFlag.Usage)
vaultAccessRemoveCmd.Flags().StringP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, "", cmdenv.EnvSearchFlag.Usage)
vaultAccessRemoveCmd.Flags().StringSliceP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, []string{}, cmdenv.EnvSearchFlag.Usage)
vaultAccessRemoveCmd.Flags().BoolP(cmdenv.EnvSelfFlag.Name, cmdenv.EnvSelfFlag.Shorthand, false, cmdenv.EnvSelfFlag.Usage)
return vaultAccessRemoveCmd
}
24 changes: 13 additions & 11 deletions cli/internal/commands/cmdvault/commons.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ func getVault(filePath string) (*vaults.Vault, error) {
return vault, err
}

func getPublicKeys(pubKeyStrSlice []string, query string, self bool) (publicKeys []*crypto.PublicKey,
func getPublicKeys(pubKeyStrSlice, queries []string, self bool) (publicKeys []*crypto.PublicKey,
rootPublicKey *crypto.PublicKey, err error) {
if len(pubKeyStrSlice) == 0 && query == "" && !self {
if len(pubKeyStrSlice) == 0 && len(queries) == 0 && !self {
return nil, nil, fmt.Errorf("Specify atleast one of the following flags:\n" +
" --" + cmdenv.EnvSearchFlag.Name + "\n" +
" --" + vaultAccessPublicKeysFlag.Name + "\n" +
Expand All @@ -34,23 +34,25 @@ func getPublicKeys(pubKeyStrSlice []string, query string, self bool) (publicKeys
publicKeys = append(publicKeys, publicKey)
}
profile, err := profiles.GetDefaultProfile()
if query != "" {
if len(queries) > 0 {
if err != nil {
return nil, nil, err
}
envs, err := profile.SearchEnvs(query)
if err != nil {
return nil, nil, err
}
for _, env := range envs {
publicKey, err := crypto.PublicKeyFromString(env.PublicKey)
for _, query := range queries {
envs, err := profile.SearchEnvs(query)
if err != nil {
return nil, nil, err
}
publicKeys = append(publicKeys, publicKey)
for _, env := range envs {
publicKey, err := crypto.PublicKeyFromString(env.PublicKey)
if err != nil {
return nil, nil, err
}
publicKeys = append(publicKeys, publicKey)
}
}
if len(publicKeys) == 0 {
return nil, nil, fmt.Errorf("no matching environments found for search query: " + query)
return nil, nil, fmt.Errorf("no matching environments found for the given search queries")
}
}
if self {
Expand Down
9 changes: 6 additions & 3 deletions cli/internal/commands/cmdvault/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,12 @@ func vaultNewCommand() *cobra.Command {
if err != nil {
utils.ExitOnError(err)
}
query := cmd.Flag(cmdenv.EnvSearchFlag.Name).Value.String()
queries, err := cmd.Flags().GetStringSlice(cmdenv.EnvSearchFlag.Name)
if err != nil {
utils.ExitOnError(err)
}
shareWithSelf, _ := cmd.Flags().GetBool(cmdenv.EnvSelfFlag.Name)
publicKeys, rootPublicKey, err := getPublicKeys(publicKeyStrings, query, shareWithSelf)
publicKeys, rootPublicKey, err := getPublicKeys(publicKeyStrings, queries, shareWithSelf)
if err != nil {
utils.ExitOnError(err)
}
Expand All @@ -67,7 +70,7 @@ func vaultNewCommand() *cobra.Command {
},
}
vaultNewCmd.Flags().StringSliceP(vaultAccessPublicKeysFlag.Name, vaultAccessPublicKeysFlag.Shorthand, []string{}, vaultAccessPublicKeysFlag.Usage)
vaultNewCmd.Flags().StringP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, "", cmdenv.EnvSearchFlag.Usage)
vaultNewCmd.Flags().StringSliceP(cmdenv.EnvSearchFlag.Name, cmdenv.EnvSearchFlag.Shorthand, []string{}, cmdenv.EnvSearchFlag.Usage)
vaultNewCmd.Flags().BoolP(cmdenv.EnvSelfFlag.Name, cmdenv.EnvSelfFlag.Shorthand, false, cmdenv.EnvSelfFlag.Usage)
vaultNewCmd.Flags().StringP(vaultK8sFlag.Name, vaultK8sFlag.Shorthand, "", vaultK8sFlag.Usage)
vaultNewCmd.Flags().BoolP(vaultEnableHashingFlag.Name, vaultEnableHashingFlag.Shorthand, false, vaultEnableHashingFlag.Usage)
Expand Down

0 comments on commit 2fbd6ab

Please sign in to comment.