46 lines
945 B
Go
46 lines
945 B
Go
package cmdline
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"gitlink.org.cn/cloudream/common/pkgs/cmdtrie"
|
|
"gitlink.org.cn/cloudream/scheduler/client/internal/services"
|
|
)
|
|
|
|
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
|
|
}
|