Skip to content

Commit

Permalink
cmd/internal/cmd/base: add pass args
Browse files Browse the repository at this point in the history
  • Loading branch information
visualfc committed Jun 26, 2022
1 parent 093b6b2 commit 58d06d2
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
72 changes: 72 additions & 0 deletions cmd/internal/base/pass.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package base

import (
"flag"
"fmt"
)

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) 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", "tags", "toolexec", "buildvcs")
return p
}
4 changes: 3 additions & 1 deletion cmd/internal/build/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ func init() {
Cmd.Run = runCmd
}

func runCmd(_ *base.Command, args []string) {
func runCmd(cmd *base.Command, args []string) {
pass := base.PassBuildFlags(cmd)
err := flag.Parse(args)
if err != nil {
log.Panicln("parse input arguments failed:", err)
Expand Down Expand Up @@ -85,6 +86,7 @@ func runCmd(_ *base.Command, args []string) {
}
confCmd.Flags = []string{"-o", output}
}
confCmd.Flags = append(confCmd.Flags, pass.Args...)
build(proj, conf, confCmd)
}

Expand Down

0 comments on commit 58d06d2

Please sign in to comment.