working commit

This commit is contained in:
Олег Бородин
2026-05-26 09:58:10 +02:00
parent 315f69b123
commit a53197e432
17 changed files with 1057 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
/*
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
*/
package accountcmd
import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
type GrantUtil struct {
createGrantParams CreateGrantParams
updateGrantParams UpdateGrantParams
getGrantParams GetGrantParams
deleteGrantParams DeleteGrantParams
listGrantsParams ListGrantsParams
commonGrantParams CommonGrantParams
}
func NewGrantUtil() *GrantUtil {
return &GrantUtil{}
}
func (util *GrantUtil) MakeGrantCmds() *cobra.Command {
var subCmd = &cobra.Command{
Use: "grants",
Short: "Grant operations",
Aliases: []string{"grant"},
}
const defaultTimeout uint64 = 10
subCmd.PersistentFlags().StringVarP(&util.commonGrantParams.Username, "user", "u", "", "Username")
subCmd.PersistentFlags().StringVarP(&util.commonGrantParams.Password, "pass", "p", "", "Password")
subCmd.PersistentFlags().Uint64VarP(&util.commonGrantParams.Timeout, "timeout", "t", defaultTimeout, "Operation timeout")
subCmd.PersistentFlags().BoolVarP(&util.commonGrantParams.SkipTLSVerify, "skipVerify", "S", true, "Skip server certificate verify")
vi := viper.New()
vi.SetEnvPrefix("mbase")
vi.BindEnv("user")
vi.BindEnv("pass")
util.commonGrantParams.Username = vi.GetString("user")
util.commonGrantParams.Password = vi.GetString("pass")
// CreateGrant
var createGrantCmd = &cobra.Command{
Use: "create [user:pass@]hostname[:port] username|accountId rigth pattern",
Short: "Create grant",
Args: cobra.ExactArgs(4),
Run: util.CreateGrant,
}
subCmd.AddCommand(createGrantCmd)
// GetGrant
var getGrantCmd = &cobra.Command{
Use: "get [user:pass@]hostname[:port] grantId",
Short: "Get detail grant info",
Args: cobra.ExactArgs(2),
Run: util.GetGrant,
}
subCmd.AddCommand(getGrantCmd)
// UpdateGrant
var updateGrantCmd = &cobra.Command{
Use: "update [user:pass@]hostname[:port] gruntId newPattern",
Short: "Update grant parameters",
Args: cobra.ExactArgs(3),
Run: util.UpdateGrant,
}
subCmd.AddCommand(updateGrantCmd)
// DeleteGrant
var deleteGrantCmd = &cobra.Command{
Use: "delete [user:pass@]hostname[:port] gruntId ",
Short: "Delete grant",
Args: cobra.ExactArgs(2),
Run: util.DeleteGrant,
}
subCmd.AddCommand(deleteGrantCmd)
// ListGrants
var listGrantsCmd = &cobra.Command{
Use: "list [user:pass@]hostname[:port] accountId|username",
Short: "list user grants",
Args: cobra.ExactArgs(2),
Run: util.ListGrants,
}
listGrantsCmd.Flags().BoolVarP(&util.listGrantsParams.Detail, "detail", "d", false, "Show detail information")
subCmd.AddCommand(listGrantsCmd)
return subCmd
}
type CommonGrantParams struct {
Username string
Password string
Hostname string
Timeout uint64
SkipTLSVerify bool
}