Skip to content

Commit

Permalink
Fix args propagation (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
cristaloleg authored Feb 25, 2023
1 parent 14eb47e commit 35dba20
Showing 1 changed file with 28 additions and 7 deletions.
35 changes: 28 additions & 7 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"flag"
"fmt"
"os"
"strings"

"github.com/cristalhq/acmd"
Expand All @@ -26,8 +25,7 @@ func main() {
Version: version,
})
if err := r.Run(); err != nil {
fmt.Printf("go-perf: %v\n", err)
os.Exit(1)
r.Exit(err)
}
}

Expand All @@ -36,31 +34,43 @@ var cmds = []acmd.Command{
Name: "almostInlined",
Alias: "inl",
Description: "find functions that cross inlining threshold just barely",
ExecFunc: func(_ context.Context, _ []string) error {
ExecFunc: func(_ context.Context, args []string) error {
if err := parseArgs("almostInlined", args); err != nil {
return err
}
return run(&almostInlinedRunner{})
},
},
{
Name: "escapedVariables",
Alias: "esc",
Description: "find variables that are escaped to the heap",
ExecFunc: func(_ context.Context, _ []string) error {
ExecFunc: func(_ context.Context, args []string) error {
if err := parseArgs("escapedVariables", args); err != nil {
return err
}
return run(&escapeAnalysisRunner{})
},
},
{
Name: "boundChecks",
Alias: "bce",
Description: "find slice/array that has bound check",
ExecFunc: func(_ context.Context, _ []string) error {
ExecFunc: func(_ context.Context, args []string) error {
if err := parseArgs("boundChecks", args); err != nil {
return err
}
return run(&boundCheckRunner{})
},
},
{
Name: "funcSize",
Alias: "fsize",
Description: "list function machine code sizes in bytes",
ExecFunc: func(_ context.Context, _ []string) error {
ExecFunc: func(_ context.Context, args []string) error {
if err := parseArgs("funcSize", args); err != nil {
return err
}
return run(&funcSizeRunner{})
},
},
Expand All @@ -74,13 +84,24 @@ type subCommandRunner interface {
func run(cmd subCommandRunner) error {
cmd.Init()
for _, pkg := range flag.Args()[1:] {
// skip - and -- paramets
if strings.HasPrefix(pkg, "-") {
continue
}
if err := cmd.Run(pkg); err != nil {
fmt.Printf("%s: %v", pkg, err)
}
}
return nil
}

func parseArgs(cmd string, args []string) error {
fset := flag.NewFlagSet(cmd, flag.ContinueOnError)
fset.StringVar(&flagMod, "mod", "", `-mod compiler flag(readonly|vendor)`)
fset.BoolVar(&asJSON, "json", false, `return result as JSON`)
return fset.Parse(args)
}

type goArgFunc func() []string

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

0 comments on commit 35dba20

Please sign in to comment.