service.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package commands
  2. import (
  3. "fmt"
  4. "github.com/kardianos/service"
  5. "github.com/sirupsen/logrus"
  6. "github.com/urfave/cli"
  7. )
  8. var logger service.Logger
  9. type program struct {
  10. ctx *cli.Context
  11. }
  12. func (p *program) Start(s service.Service) error {
  13. //go p.run()
  14. return nil
  15. }
  16. func (p *program) Stop(s service.Service) error {
  17. // Stop should not block. Return with a few seconds.
  18. return nil
  19. }
  20. // CmdService cli 命令
  21. var CmdService = cli.Command{
  22. Name: "service",
  23. Usage: "./pbx-api-gin service",
  24. Description: "PBX API install/uninstall",
  25. Action: runService,
  26. Flags: []cli.Flag{
  27. cli.StringFlag{Name: "action, a", Usage: "install/uninstall/start/stop"},
  28. cli.StringFlag{Name: "config, c", Usage: "配置文件路径"},
  29. cli.Int64Flag{Name: "port, p", Usage: "默认绑定端口 8080", Value: 8080},
  30. cli.StringFlag{Name: "host", Usage: "默认绑定地址 0.0.0.0", Value: "0.0.0.0"},
  31. },
  32. }
  33. func runService(ctx *cli.Context) {
  34. svcConfig := &service.Config{
  35. Name: "PBX-API",
  36. DisplayName: "PBX-API",
  37. Description: "PBX-API as service.",
  38. Arguments: []string{"--config", ctx.String("config")},
  39. }
  40. prg := &program{
  41. ctx: ctx,
  42. }
  43. s, err := service.New(prg, svcConfig)
  44. if err != nil {
  45. logrus.Fatal(err)
  46. }
  47. logger, err = s.Logger(nil)
  48. if err != nil {
  49. logrus.Fatal(err)
  50. }
  51. switch ctx.String("action") {
  52. case "install":
  53. if !ctx.IsSet("config") {
  54. fmt.Print("install must set config path, please by -config set")
  55. return
  56. }
  57. err = s.Install()
  58. if err != nil {
  59. fmt.Println("install err", err)
  60. } else {
  61. fmt.Println("install success")
  62. }
  63. return
  64. case "uninstall":
  65. err = s.Uninstall()
  66. if err != nil {
  67. fmt.Println("Uninstall err", err)
  68. } else {
  69. fmt.Println("Uninstall success")
  70. }
  71. return
  72. case "start":
  73. s.Start()
  74. return
  75. case "stop":
  76. s.Stop()
  77. return
  78. }
  79. err = s.Run()
  80. if err != nil {
  81. logger.Error(err)
  82. }
  83. }