fix gop run . flag provided but not defined: -ldflags
This commit is contained in:
82
cmd/internal/base/pass.go
Normal file
82
cmd/internal/base/pass.go
Normal 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
|
||||
}
|
||||
@@ -35,6 +35,7 @@ var Cmd = &base.Command{
|
||||
|
||||
func init() {
|
||||
Cmd.Run = runCmd
|
||||
base.PassBuildFlags(Cmd)
|
||||
flags.AddBuildFlags(&Cmd.Flag)
|
||||
flags.AddOutputFlags(&Cmd.Flag)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user