refactor: Console App 需要暴露出去, 自动注册 gen cmd

This commit is contained in:
tiglog 2023-10-15 00:49:22 +08:00
parent 73642be12c
commit 29e12c1aa6

View File

@ -12,7 +12,7 @@ import (
"os" "os"
) )
type sApp struct { type ConsoleApp struct {
name string name string
version string version string
desc string desc string
@ -20,8 +20,8 @@ type sApp struct {
about ActionHandler about ActionHandler
} }
func New(name, desc string) *sApp { func New(name, desc string) *ConsoleApp {
app := &sApp{ app := &ConsoleApp{
name: name, name: name,
version: "v0.1.0", version: "v0.1.0",
desc: desc, desc: desc,
@ -29,45 +29,46 @@ func New(name, desc string) *sApp {
} }
app.AddCmd(NewAboutCmd(app)) app.AddCmd(NewAboutCmd(app))
app.AddCmd(NewAirCmd(app)) app.AddCmd(NewAirCmd(app))
app.AddCmd(NewGenCmd(app))
app.AddCmd(NewListCmd(app)) app.AddCmd(NewListCmd(app))
app.AddCmd(NewHelpCmd(app)) app.AddCmd(NewHelpCmd(app))
return app return app
} }
func (s *sApp) GetCmds() map[string]ICommand { func (s *ConsoleApp) GetCmds() map[string]ICommand {
return s.cmds return s.cmds
} }
func (s *sApp) GetName() string { func (s *ConsoleApp) GetName() string {
return s.name return s.name
} }
func (s *sApp) GetDesc() string { func (s *ConsoleApp) GetDesc() string {
return s.desc return s.desc
} }
func (s *sApp) GetVersion() string { func (s *ConsoleApp) GetVersion() string {
return s.version return s.version
} }
func (s *sApp) AddCmd(cmd ICommand) { func (s *ConsoleApp) AddCmd(cmd ICommand) {
s.cmds[cmd.GetName()] = cmd s.cmds[cmd.GetName()] = cmd
} }
func (s *sApp) HasCmd(cmd string) bool { func (s *ConsoleApp) HasCmd(cmd string) bool {
_, ok := s.cmds[cmd] _, ok := s.cmds[cmd]
return ok return ok
} }
func (s *sApp) SetExtraAbout(about ActionHandler) { func (s *ConsoleApp) SetExtraAbout(about ActionHandler) {
s.about = about s.about = about
} }
func (s *sApp) GetExtraAbout() ActionHandler { func (s *ConsoleApp) GetExtraAbout() ActionHandler {
return s.about return s.about
} }
func (s *sApp) Run(args []string) { func (s *ConsoleApp) Run(args []string) {
cmd := "list" cmd := "list"
if len(args) == 1 { if len(args) == 1 {
args = []string{cmd} args = []string{cmd}