set.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package context
  2. import (
  3. "fmt"
  4. "log"
  5. "github.com/gravitl/netmaker/cli/config"
  6. "github.com/spf13/cobra"
  7. )
  8. const (
  9. FlagEndpoint = "endpoint"
  10. FlagUsername = "username"
  11. FlagPassword = "password"
  12. FlagMasterKey = "master_key"
  13. )
  14. var (
  15. endpoint string
  16. username string
  17. password string
  18. masterKey string
  19. )
  20. // contextSetCmd creates/updates a context
  21. var contextSetCmd = &cobra.Command{
  22. Use: fmt.Sprintf("set [NAME] [--%s=https://api.netmaker.io] [--%s=admin] [--%s=pass] [--%s=secret]", FlagEndpoint, FlagUsername, FlagPassword, FlagMasterKey),
  23. Args: cobra.ExactArgs(1),
  24. Short: "Create a context or update an existing one",
  25. Long: `Create a context or update an existing one`,
  26. Run: func(cmd *cobra.Command, args []string) {
  27. ctx := config.Context{
  28. Endpoint: endpoint,
  29. Username: username,
  30. Password: password,
  31. MasterKey: masterKey,
  32. }
  33. if ctx.Username == "" && ctx.MasterKey == "" {
  34. cmd.Usage()
  35. log.Fatal("Either username/password or master key is required")
  36. }
  37. config.SetContext(args[0], ctx)
  38. },
  39. }
  40. func init() {
  41. contextSetCmd.Flags().StringVar(&endpoint, FlagEndpoint, "", "Endpoint of the API Server (Required)")
  42. contextSetCmd.MarkFlagRequired(FlagEndpoint)
  43. contextSetCmd.Flags().StringVar(&username, FlagUsername, "", "Username")
  44. contextSetCmd.Flags().StringVar(&password, FlagPassword, "", "Password")
  45. contextSetCmd.MarkFlagsRequiredTogether(FlagUsername, FlagPassword)
  46. contextSetCmd.Flags().StringVar(&masterKey, FlagMasterKey, "", "Master Key")
  47. rootCmd.AddCommand(contextSetCmd)
  48. }