You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
884 B

  1. package cmd
  2. import (
  3. "fmt"
  4. "go-dht/config"
  5. "go-dht/node"
  6. log "github.com/sirupsen/logrus"
  7. "github.com/urfave/cli"
  8. )
  9. var NodeCommands = []cli.Command{
  10. {
  11. Name: "start",
  12. Usage: "start the node",
  13. Action: cmdStart,
  14. },
  15. }
  16. func cmdStart(c *cli.Context) error {
  17. if c.GlobalBool("debug") {
  18. log.SetLevel(log.DebugLevel)
  19. log.SetReportCaller(true)
  20. }
  21. if err := config.MustRead(c); err != nil {
  22. return err
  23. }
  24. fmt.Println(config.C)
  25. var n node.Node
  26. var err error
  27. if config.C.ID != "" {
  28. n, err = node.LoadNode(config.C.ID)
  29. if err != nil {
  30. return err
  31. }
  32. log.Info("Node loaded with ID: ", n.ID())
  33. } else {
  34. n, err = node.NewNode()
  35. if err != nil {
  36. return err
  37. }
  38. log.Info("New node created with ID: ", n.ID())
  39. }
  40. go func() {
  41. admin := node.NewAdmin(n)
  42. err := admin.Start()
  43. if err != nil {
  44. panic(err)
  45. }
  46. }()
  47. err = n.Start()
  48. return err
  49. }