fix gop run . flag provided but not defined: -ldflags

This commit is contained in:
tsingbx
2025-05-16 00:44:37 +08:00
parent 93b9b7d44c
commit a971b93994
3 changed files with 84 additions and 0 deletions

82
cmd/internal/base/pass.go Normal file
View File

@@ -0,0 +1,82 @@
package base
import (
"flag"
"fmt"
"strings"
)
type stringValue struct {
p *PassArgs
name string
}
func (p *stringValue) String() string {
return ""
}
func (p *stringValue) Set(v string) error {
p.p.Args = append(p.p.Args, fmt.Sprintf("-%v=%v", p.name, v))
return nil
}
type boolValue struct {
p *PassArgs
name string
}
func (p *boolValue) String() string {
return ""
}
func (p *boolValue) Set(v string) error {
p.p.Args = append(p.p.Args, fmt.Sprintf("-%v=%v", p.name, v))
return nil
}
func (p *boolValue) IsBoolFlag() bool {
return true
}
type PassArgs struct {
Args []string
Flag *flag.FlagSet
}
func (p *PassArgs) Tags() string {
for _, v := range p.Args {
if strings.HasPrefix(v, "-tags=") {
return v[6:]
}
}
return ""
}
func (p *PassArgs) Var(names ...string) {
for _, name := range names {
p.Flag.Var(&stringValue{p: p, name: name}, name, "")
}
}
func (p *PassArgs) Bool(names ...string) {
for _, name := range names {
p.Flag.Var(&boolValue{p: p, name: name}, name, "")
}
}
func NewPassArgs(flag *flag.FlagSet) *PassArgs {
p := &PassArgs{Flag: flag}
return p
}
func PassBuildFlags(cmd *Command) *PassArgs {
p := NewPassArgs(&cmd.Flag)
p.Bool("n", "x")
p.Bool("a")
p.Bool("linkshared", "race", "msan", "asan",
"trimpath", "work")
p.Var("p", "asmflags", "compiler", "buildmode",
"gcflags", "gccgoflags", "installsuffix",
"ldflags", "pkgdir", "toolexec", "buildvcs")
return p
}

View File

@@ -35,6 +35,7 @@ var Cmd = &base.Command{
func init() {
Cmd.Run = runCmd
base.PassBuildFlags(Cmd)
flags.AddBuildFlags(&Cmd.Flag)
flags.AddOutputFlags(&Cmd.Flag)
}

View File

@@ -47,6 +47,7 @@ var CmpTestCmd = &base.Command{
func init() {
Cmd.Run = runCmd
CmpTestCmd.Run = runCmpTest
base.PassBuildFlags(Cmd)
flags.AddBuildFlags(&Cmd.Flag)
flags.AddBuildFlags(&CmpTestCmd.Flag)
flags.AddCmpTestFlags(&CmpTestCmd.Flag)