Skip to content

Commit 35dba20

Browse files
authored
Fix args propagation (#22)
1 parent 14eb47e commit 35dba20

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

main.go

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"flag"
66
"fmt"
7-
"os"
87
"strings"
98

109
"github.com/cristalhq/acmd"
@@ -26,8 +25,7 @@ func main() {
2625
Version: version,
2726
})
2827
if err := r.Run(); err != nil {
29-
fmt.Printf("go-perf: %v\n", err)
30-
os.Exit(1)
28+
r.Exit(err)
3129
}
3230
}
3331

@@ -36,31 +34,43 @@ var cmds = []acmd.Command{
3634
Name: "almostInlined",
3735
Alias: "inl",
3836
Description: "find functions that cross inlining threshold just barely",
39-
ExecFunc: func(_ context.Context, _ []string) error {
37+
ExecFunc: func(_ context.Context, args []string) error {
38+
if err := parseArgs("almostInlined", args); err != nil {
39+
return err
40+
}
4041
return run(&almostInlinedRunner{})
4142
},
4243
},
4344
{
4445
Name: "escapedVariables",
4546
Alias: "esc",
4647
Description: "find variables that are escaped to the heap",
47-
ExecFunc: func(_ context.Context, _ []string) error {
48+
ExecFunc: func(_ context.Context, args []string) error {
49+
if err := parseArgs("escapedVariables", args); err != nil {
50+
return err
51+
}
4852
return run(&escapeAnalysisRunner{})
4953
},
5054
},
5155
{
5256
Name: "boundChecks",
5357
Alias: "bce",
5458
Description: "find slice/array that has bound check",
55-
ExecFunc: func(_ context.Context, _ []string) error {
59+
ExecFunc: func(_ context.Context, args []string) error {
60+
if err := parseArgs("boundChecks", args); err != nil {
61+
return err
62+
}
5663
return run(&boundCheckRunner{})
5764
},
5865
},
5966
{
6067
Name: "funcSize",
6168
Alias: "fsize",
6269
Description: "list function machine code sizes in bytes",
63-
ExecFunc: func(_ context.Context, _ []string) error {
70+
ExecFunc: func(_ context.Context, args []string) error {
71+
if err := parseArgs("funcSize", args); err != nil {
72+
return err
73+
}
6474
return run(&funcSizeRunner{})
6575
},
6676
},
@@ -74,13 +84,24 @@ type subCommandRunner interface {
7484
func run(cmd subCommandRunner) error {
7585
cmd.Init()
7686
for _, pkg := range flag.Args()[1:] {
87+
// skip - and -- paramets
88+
if strings.HasPrefix(pkg, "-") {
89+
continue
90+
}
7791
if err := cmd.Run(pkg); err != nil {
7892
fmt.Printf("%s: %v", pkg, err)
7993
}
8094
}
8195
return nil
8296
}
8397

98+
func parseArgs(cmd string, args []string) error {
99+
fset := flag.NewFlagSet(cmd, flag.ContinueOnError)
100+
fset.StringVar(&flagMod, "mod", "", `-mod compiler flag(readonly|vendor)`)
101+
fset.BoolVar(&asJSON, "json", false, `return result as JSON`)
102+
return fset.Parse(args)
103+
}
104+
84105
type goArgFunc func() []string
85106

86107
func goArgs(pkg string, argFuncs ...goArgFunc) (args []string) {

0 commit comments

Comments
 (0)