aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/mbf/main.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-16 16:00:32 +0900
committerOphestra <cat@gensokyo.uk>2026-04-16 17:43:52 +0900
commit823575acaccfb34d908dad2ae14551fa425d7431 (patch)
treef9df2fc4a28169e89a90a8477188e84bbe3077b2 /cmd/mbf/main.go
parent136bc0917be7c02b818bfc8d4d54ec8ffbc8d21b (diff)
cmd/mbf: move info command
This is cleaner with less shared state. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/mbf/main.go')
-rw-r--r--cmd/mbf/main.go95
1 files changed, 1 insertions, 94 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index bfa2aa07..675f8bb2 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -24,7 +24,6 @@ import (
"path/filepath"
"runtime"
"strconv"
- "strings"
"sync"
"sync/atomic"
"syscall"
@@ -149,99 +148,7 @@ func main() {
"info",
"Display out-of-band metadata of an artifact",
func(args []string) (err error) {
- if len(args) == 0 {
- return errors.New("info requires at least 1 argument")
- }
-
- var r *rosa.Report
- if flagReport != "" {
- if r, err = rosa.OpenReport(flagReport); err != nil {
- return err
- }
- defer func() {
- if closeErr := r.Close(); err == nil {
- err = closeErr
- }
- }()
- defer r.HandleAccess(&err)()
- }
-
- 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, "/"))
- }
- if len(meta.Dependencies) > 0 {
- fmt.Print("depends on :")
- for _, d := range meta.Dependencies {
- s := rosa.GetMetadata(d).Name
- if version := rosa.Std.Version(d); version != rosa.Unversioned {
- s += "-" + version
- }
- fmt.Print(" " + s)
- }
- fmt.Println()
- }
-
- const statusPrefix = "status : "
- if flagStatus {
- if r == nil {
- var f io.ReadSeekCloser
- err = cm.Do(func(cache *pkg.Cache) (err error) {
- f, err = cache.OpenStatus(rosa.Std.Load(p))
- return
- })
- if err != nil {
- if errors.Is(err, os.ErrNotExist) {
- fmt.Println(
- statusPrefix + "not yet cured",
- )
- } else {
- return
- }
- } else {
- fmt.Print(statusPrefix)
- _, err = io.Copy(os.Stdout, f)
- if err = errors.Join(err, f.Close()); err != nil {
- return
- }
- }
- } else if err = cm.Do(func(cache *pkg.Cache) (err error) {
- status, n := r.ArtifactOf(cache.Ident(rosa.Std.Load(p)))
- if status == nil {
- fmt.Println(
- statusPrefix + "not in report",
- )
- } else {
- fmt.Println("size :", n)
- fmt.Print(statusPrefix)
- if _, err = os.Stdout.Write(status); err != nil {
- return
- }
- }
- return
- }); err != nil {
- return
- }
- }
-
- if i != len(args)-1 {
- fmt.Println()
- }
- }
- }
- return nil
+ return commandInfo(&cm, args, os.Stdout, flagStatus, flagReport)
},
).
Flag(