From 80f2367c163eed8cbbcd1d633514dfea5410744c Mon Sep 17 00:00:00 2001 From: Ophestra Date: Fri, 6 Mar 2026 23:20:00 +0900 Subject: [PATCH] cmd/mbf: merge status and info commands This is cleaner, and offers better integration with the work-in-progress report file. Signed-off-by: Ophestra --- cmd/mbf/main.go | 109 ++++++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 51 deletions(-) diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go index 2820b60..1340d64 100644 --- a/cmd/mbf/main.go +++ b/cmd/mbf/main.go @@ -131,38 +131,69 @@ func main() { ) } - c.NewCommand( - "info", - "Display out-of-band metadata of an artifact", - func(args []string) error { - if len(args) == 0 { - return errors.New("info requires at least 1 argument") - } + { + var ( + flagStatus bool + ) + c.NewCommand( + "info", + "Display out-of-band metadata of an artifact", + func(args []string) error { + if len(args) == 0 { + return errors.New("info requires at least 1 argument") + } - for i, name := range args { - if p, ok := rosa.ResolveName(name); !ok { - return fmt.Errorf("unknown artifact %q", name) - } else { - var suffix string - if version := rosa.Std.Version(p); version != rosa.Unversioned { - suffix += "-" + version - } - fmt.Println("name : " + name + suffix) + for i, name := range args { + if p, ok := rosa.ResolveName(name); !ok { + return fmt.Errorf("unknown artifact %q", name) + } else { + var suffix string + if version := rosa.Std.Version(p); version != rosa.Unversioned { + suffix += "-" + version + } + fmt.Println("name : " + name + suffix) - meta := rosa.GetMetadata(p) - fmt.Println("description : " + meta.Description) - if meta.Website != "" { - fmt.Println("website : " + strings.TrimSuffix(meta.Website, "/")) - } + meta := rosa.GetMetadata(p) + fmt.Println("description : " + meta.Description) + if meta.Website != "" { + fmt.Println("website : " + + strings.TrimSuffix(meta.Website, "/")) + } - if i != len(args)-1 { - fmt.Println() + if flagStatus { + const statusPrefix = "status : " + r, err := cache.OpenStatus(rosa.Std.Load(p)) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + fmt.Println( + statusPrefix + name + " was never cured", + ) + } else { + return err + } + } else { + fmt.Print(statusPrefix) + _, err = io.Copy(os.Stdout, r) + if err = errors.Join(err, r.Close()); err != nil { + return err + } + } + } + + if i != len(args)-1 { + fmt.Println() + } } } - } - return nil - }, - ) + return nil + }, + ). + Flag( + &flagStatus, + "status", command.BoolFlag(false), + "Display cure status if available", + ) + } c.NewCommand("updates", command.UsageInternal, func([]string) error { var n int @@ -323,30 +354,6 @@ func main() { ) } - c.NewCommand( - "status", - "Display the status file of an artifact", - func(args []string) error { - if len(args) != 1 { - return errors.New("status requires 1 argument") - } - if p, ok := rosa.ResolveName(args[0]); !ok { - return fmt.Errorf("unknown artifact %q", args[0]) - } else { - r, err := cache.OpenStatus(rosa.Std.Load(p)) - if err != nil { - if errors.Is(err, os.ErrNotExist) { - return errors.New(args[0] + " was never cured") - } - return err - } - - _, err = io.Copy(os.Stdout, r) - return errors.Join(err, r.Close()) - } - }, - ) - { var ( flagNet bool