123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package commands
- import (
- "crm-api/pkg/lfshook"
- "fmt"
- "github.com/kardianos/service"
- "github.com/urfave/cli"
- )
- var logger service.Logger
- type program struct {
- ctx *cli.Context
- }
- func (p *program) Start(s service.Service) error {
- go p.run()
- return nil
- }
- func (p *program) run() {
- runWeb(p.ctx)
- }
- func (p *program) Stop(s service.Service) error {
- // Stop should not block. Return with a few seconds.
- return nil
- }
- // CmdService cli 命令
- var CmdService = cli.Command{
- Name: "service",
- Usage: "Run the program as a service",
- Description: "PBX API install/uninstall",
- Action: runService,
- Flags: []cli.Flag{
- cli.StringFlag{Name: "action, a", Usage: "install/uninstall/start/stop"},
- cli.StringFlag{Name: "config, c", Usage: "配置文件路径"},
- cli.Int64Flag{Name: "port, p", Usage: "默认绑定端口 8080", Value: 8080},
- cli.StringFlag{Name: "host", Usage: "默认绑定地址 0.0.0.0", Value: "0.0.0.0"},
- },
- }
- func runService(ctx *cli.Context) {
- svcConfig := &service.Config{
- Name: "PBX-API",
- DisplayName: "PBX-API",
- Description: "PBX-API as service.",
- Arguments: []string{"web", "--config", ctx.String("config")},
- }
- prg := &program{
- ctx: ctx,
- }
- s, err := service.New(prg, svcConfig)
- if err != nil {
- lfshook.NewLogger().Fatal(err)
- }
- logger, err = s.Logger(nil)
- if err != nil {
- lfshook.NewLogger().Fatal(err)
- }
- switch ctx.String("action") {
- case "install":
- if !ctx.IsSet("config") {
- fmt.Print("install must set config path, please by -config set")
- return
- }
- err = s.Install()
- if err != nil {
- fmt.Println("install err", err)
- } else {
- fmt.Println("install success")
- }
- return
- case "uninstall":
- err = s.Uninstall()
- if err != nil {
- fmt.Println("Uninstall err", err)
- } else {
- fmt.Println("Uninstall success")
- }
- return
- case "start":
- s.Start()
- return
- case "stop":
- s.Stop()
- return
- }
- err = s.Run()
- if err != nil {
- logger.Error(err)
- }
- }
|