65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package cmdline
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/spf13/cobra"
|
|
"gitlink.org.cn/cloudream/scheduler/schedulerMiddleware/internal/services"
|
|
"os"
|
|
|
|
"gitlink.org.cn/cloudream/common/pkgs/cmdtrie"
|
|
)
|
|
|
|
type CommandContext struct {
|
|
Cmdline *Commandline
|
|
}
|
|
|
|
var commands = cmdtrie.NewCommandTrie[CommandContext, error]()
|
|
|
|
type Commandline struct {
|
|
Svc *services.Service
|
|
}
|
|
|
|
func NewCommandline(svc *services.Service) (*Commandline, error) {
|
|
return &Commandline{
|
|
Svc: svc,
|
|
}, nil
|
|
}
|
|
|
|
func (c *Commandline) DispatchCommand(allArgs []string) {
|
|
cmdCtx := CommandContext{
|
|
Cmdline: c,
|
|
}
|
|
cmdErr, err := commands.Execute(cmdCtx, allArgs, cmdtrie.ExecuteOption{ReplaceEmptyArrayWithNil: true})
|
|
if err != nil {
|
|
fmt.Printf("execute command failed, err: %s", err.Error())
|
|
os.Exit(1)
|
|
}
|
|
if cmdErr != nil {
|
|
fmt.Printf("execute command failed, err: %s", cmdErr.Error())
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func MustAddCmd(fn any, prefixWords ...string) any {
|
|
commands.MustAdd(fn, prefixWords...)
|
|
return nil
|
|
}
|
|
|
|
var RootCmd = &cobra.Command{
|
|
Use: "middleware",
|
|
Short: "scheduler middleware",
|
|
Long: `scheduler middleware`,
|
|
}
|
|
|
|
func init() {
|
|
var configPath string
|
|
var address string
|
|
|
|
RootCmd.Flags().StringVarP(&configPath, "config", "c", "", "Path to config file")
|
|
RootCmd.Flags().StringVarP(&address, "listen", "l", ":7891", "listen address")
|
|
|
|
RootCmd.Run = func(cmd *cobra.Command, args []string) {
|
|
serve(configPath, address)
|
|
}
|
|
}
|