package main import ( "errors" "log" "os" "hakurei.app/command" "hakurei.app/internal/pkg" ) func main() { log.SetFlags(0) log.SetPrefix("irdump: ") var ( flagOutput string flagReal bool flagHeader bool flagForce bool flagRaw bool ) c := command.New(os.Stderr, log.Printf, "irdump", func(args []string) (err error) { var input *os.File if len(args) != 1 { return errors.New("irdump requires 1 argument") } if input, err = os.Open(args[0]); err != nil { return } defer input.Close() var output *os.File if flagOutput == "" { output = os.Stdout } else { defer output.Close() if output, err = os.Create(flagOutput); err != nil { return } } var out string if out, err = pkg.Disassemble(input, flagReal, flagHeader, flagForce, flagRaw); err != nil { return } if _, err = output.WriteString(out); err != nil { return } return }).Flag( &flagOutput, "o", command.StringFlag(""), "Output file for asm (leave empty for stdout)", ).Flag( &flagReal, "r", command.BoolFlag(false), "skip label generation; idents print real value", ).Flag( &flagHeader, "H", command.BoolFlag(false), "display artifact headers", ).Flag( &flagForce, "f", command.BoolFlag(false), "force display (skip validations)", ).Flag( &flagRaw, "R", command.BoolFlag(false), "don't format output", ) c.MustParse(os.Args[1:], func(err error) { log.Fatal(err) }) }