feat(bna): implement fix-labels command

The fix-labels command will fix a symbol file by automatically renaming
labels matching a certain regex, and looking for the captured parameter
in a "fixlist" i.e. a newline delimited list of OG names.
This commit is contained in:
phaneron 2026-04-29 03:13:52 -04:00
parent d020e6ba36
commit cbb42eb953
6 changed files with 145 additions and 4 deletions

View file

@ -2,6 +2,7 @@ package cmd
import (
_ "github.com/thunderbrewhq/binana/go/app/cmd/add_symbol"
_ "github.com/thunderbrewhq/binana/go/app/cmd/fix_labels"
_ "github.com/thunderbrewhq/binana/go/app/cmd/lint"
_ "github.com/thunderbrewhq/binana/go/app/cmd/make"
_ "github.com/thunderbrewhq/binana/go/app/cmd/make_samples"

View file

@ -0,0 +1,37 @@
package fix_labels
import (
"github.com/spf13/cobra"
"github.com/thunderbrewhq/binana/go/app"
"github.com/thunderbrewhq/binana/go/app/cmd/root"
"github.com/thunderbrewhq/binana/go/app/util"
)
var fix_labels_cmd = cobra.Command{
Use: "fix-labels fixlist capture-regex fix-pattern",
Args: cobra.MinimumNArgs(3),
Short: "quickly edit symbols by regex matching tokens against a list of known good symbols",
Run: run_fix_labels_cmd,
}
func init() {
f := fix_labels_cmd.Flags()
f.StringP("symbols", "s", "", "optional: specify a file to read from instead of stdin")
root.RootCmd.AddCommand(&fix_labels_cmd)
}
func run_fix_labels_cmd(cmd *cobra.Command, args []string) {
f := cmd.Flags()
var (
err error
params util.FixLabelsParams
)
params.Input, err = f.GetString("symbols")
if err != nil {
app.Fatal(err)
}
params.FixList = args[0]
params.Capture = args[1]
params.FixPattern = args[2]
util.FixLabels(&params)
}

View file

@ -24,7 +24,7 @@ func init() {
f.StringSlice("program", nil, "a list of programs to return tokens for")
f.StringSlice("os", nil, "a list of kernel names to return tokens for (windows, darwin, linux)")
f.StringSlice("arch", nil, "a list of CPU architectures to return tokens for (ppc, 386, amd64)")
f.String("present", "normal", "control the way tokens are presented to console (normal, name-only)")
f.String("present", "normal", "control the way tokens are presented to console (name, sample-name)")
f.Bool("quote", false, "quote strings before presenting")
root.RootCmd.AddCommand(&query_cmd)
}