gf
gf copied to clipboard
os/gcmd: Parsing error when creating a subcommand from a structure and the subcommand has multiple parameters.
Go version
go version go1.22.4 windows/amd64
GoFrame version
2.7.2
Can this bug be reproduced with the latest release?
Option Yes
What did you do?
// main.go
func main() {
gcmd.Init("main.go gen controller app data")
ctx := gctx.GetInitCtx()
object, err := gcmd.NewFromObject(cmd.Wg)
if err != nil {
g.Log().Fatalf(ctx, "%+v", err)
}
if err := object.AddObject(cmd.Gen); err != nil {
g.Log().Fatalf(ctx, "%+v", err)
}
if path, _ := gfile.Search(cliFolderName); path != "" {
if adapter, ok := g.Cfg().GetAdapter().(*gcfg.AdapterFile); ok {
if err := adapter.SetPath(path); err != nil {
util.Fatal(err)
}
}
}
object.Run(ctx)
}
// internal/ cmd/wg_gen.go
package cmd
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
)
var Wg = &cWg{}
type (
cWg struct {
g.Meta `name:"wg"`
}
cWgInput struct {
g.Meta `name:"wg"`
}
cWgOutput struct {
}
)
func (receiver *cWg) Index(ctx context.Context, in cWgInput) (out *cWgOutput, err error) {
gcmd.CommandFromCtx(ctx).Print()
return nil, err
}
// internal/ cmd/wg_gen.go
package cmd
import (
"github.com/gogf/gf/v2/frame/g"
)
var Gen = cGen{}
type (
cGen struct {
g.Meta `name:"gen"`
cGenController
}
)
// internal/ cmd/wg_gen_controller.go
package cmd
import "wsy-generator/internal/cmd/gen_controller"
type cGenController = gen_controller.GenController
// internal/cmd/gen_controller/gen_controller.go
package gen_controller
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/text/gstr"
"net/http"
"sync"
"wsy-generator/internal/consts"
"wsy-generator/internal/util"
)
type (
GenController struct {
g.Meta `name:"controller"`
}
GenControllerInput struct {
g.Meta `name:"controller" config:"gfcli.gen.ctrl" `
A string `name:"a" arg:"true"`
B string `name:"b" arg:"true"`
}
GenControllerOutput struct{}
)
func (receiver GenController) Index(ctx context.Context, in GenControllerInput) (out *GenControllerOutput, err error) {
return
}
What did you see happen?
当命令行为wg gen controller a b
时,最后一个代码片段中in.A=="b",in.B==""
What did you expect to see?
当命令行为wg gen controller a b时,最后一个代码片段中in.A=="a"
,in.B=="b"