cmds.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package cli_options
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/netclient/command"
  7. "github.com/gravitl/netmaker/netclient/config"
  8. "github.com/urfave/cli/v2"
  9. )
  10. // GetCommands - return commands that CLI uses
  11. func GetCommands(cliFlags []cli.Flag) []*cli.Command {
  12. return []*cli.Command{
  13. {
  14. Name: "join",
  15. Usage: "Join a Netmaker network.",
  16. Flags: cliFlags,
  17. Action: func(c *cli.Context) error {
  18. parseVerbosity(c)
  19. cfg, pvtKey, err := config.GetCLIConfig(c)
  20. if err != nil {
  21. return err
  22. }
  23. if cfg.Network == "all" {
  24. err = errors.New("no network provided")
  25. return err
  26. }
  27. if cfg.Server.GRPCAddress == "" {
  28. err = errors.New("no server address provided")
  29. return err
  30. }
  31. err = command.Join(&cfg, pvtKey)
  32. return err
  33. },
  34. },
  35. {
  36. Name: "leave",
  37. Usage: "Leave a Netmaker network.",
  38. Flags: cliFlags,
  39. // the action, or code that will be executed when
  40. // we execute our `ns` command
  41. Action: func(c *cli.Context) error {
  42. parseVerbosity(c)
  43. cfg, _, err := config.GetCLIConfig(c)
  44. if err != nil {
  45. return err
  46. }
  47. err = command.Leave(&cfg, c.String("force") == "yes")
  48. return err
  49. },
  50. },
  51. {
  52. Name: "pull",
  53. Usage: "Pull latest configuration and peers from server.",
  54. Flags: cliFlags,
  55. // the action, or code that will be executed when
  56. // we execute our `ns` command
  57. Action: func(c *cli.Context) error {
  58. parseVerbosity(c)
  59. cfg, _, err := config.GetCLIConfig(c)
  60. if err != nil {
  61. return err
  62. }
  63. err = command.Pull(&cfg)
  64. return err
  65. },
  66. },
  67. {
  68. Name: "list",
  69. Usage: "Get list of networks.",
  70. Flags: cliFlags,
  71. // the action, or code that will be executed when
  72. // we execute our `ns` command
  73. Action: func(c *cli.Context) error {
  74. parseVerbosity(c)
  75. cfg, _, err := config.GetCLIConfig(c)
  76. if err != nil {
  77. return err
  78. }
  79. err = command.List(cfg)
  80. return err
  81. },
  82. },
  83. {
  84. Name: "uninstall",
  85. Usage: "Uninstall the netclient system service.",
  86. Flags: cliFlags,
  87. // the action, or code that will be executed when
  88. // we execute our `ns` command
  89. Action: func(c *cli.Context) error {
  90. parseVerbosity(c)
  91. err := command.Uninstall()
  92. return err
  93. },
  94. },
  95. {
  96. Name: "daemon",
  97. Usage: "run netclient as daemon",
  98. Flags: cliFlags,
  99. Action: func(c *cli.Context) error {
  100. // set max verbosity for daemon regardless
  101. logger.Verbosity = 3
  102. err := command.Daemon()
  103. return err
  104. },
  105. },
  106. {
  107. Name: "verbosity",
  108. Usage: "run netclient verb as daemon",
  109. Flags: cliFlags,
  110. Action: func(c *cli.Context) error {
  111. // set max verbosity for daemon regardless
  112. parseVerbosity(c)
  113. return nil
  114. },
  115. },
  116. }
  117. }
  118. // == Private funcs ==
  119. func parseVerbosity(c *cli.Context) {
  120. if c.Bool("V") {
  121. logger.Verbosity = 1
  122. } else if c.Bool("VV") {
  123. logger.Verbosity = 2
  124. } else if c.Bool("VVV") {
  125. logger.Verbosity = 3
  126. }
  127. logger.Log(0, fmt.Sprintf("set verbosity to %d", logger.Verbosity))
  128. }