cmd/mbf: optionally read report in info
All checks were successful
Test / Create distribution (push) Successful in 1m3s
Test / Sandbox (push) Successful in 2m39s
Test / Hakurei (push) Successful in 3m46s
Test / ShareFS (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 5m6s
Test / Hakurei (race detector) (push) Successful in 6m3s
Test / Flake checks (push) Successful in 1m28s

This is a useful frontend for the report files before web server is ready.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-03-07 02:26:35 +09:00
parent 86c336de88
commit 6228cda7ad

View File

@@ -134,15 +134,29 @@ func main() {
{ {
var ( var (
flagStatus bool flagStatus bool
flagReport string
) )
c.NewCommand( c.NewCommand(
"info", "info",
"Display out-of-band metadata of an artifact", "Display out-of-band metadata of an artifact",
func(args []string) error { func(args []string) (err error) {
if len(args) == 0 { if len(args) == 0 {
return errors.New("info requires at least 1 argument") 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 { for i, name := range args {
if p, ok := rosa.ResolveName(name); !ok { if p, ok := rosa.ResolveName(name); !ok {
return fmt.Errorf("unknown artifact %q", name) return fmt.Errorf("unknown artifact %q", name)
@@ -160,22 +174,38 @@ func main() {
strings.TrimSuffix(meta.Website, "/")) strings.TrimSuffix(meta.Website, "/"))
} }
if flagStatus {
const statusPrefix = "status : " const statusPrefix = "status : "
r, err := cache.OpenStatus(rosa.Std.Load(p)) if flagStatus {
if r == nil {
var f io.ReadSeekCloser
f, err = cache.OpenStatus(rosa.Std.Load(p))
if err != nil { if err != nil {
if errors.Is(err, os.ErrNotExist) { if errors.Is(err, os.ErrNotExist) {
fmt.Println( fmt.Println(
statusPrefix + name + " was never cured", statusPrefix + "not yet cured",
) )
} else { } else {
return err return
} }
} else { } else {
fmt.Print(statusPrefix) fmt.Print(statusPrefix)
_, err = io.Copy(os.Stdout, r) _, err = io.Copy(os.Stdout, f)
if err = errors.Join(err, r.Close()); err != nil { if err = errors.Join(err, f.Close()); err != nil {
return err return
}
}
} else {
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
}
} }
} }
} }
@@ -192,6 +222,11 @@ func main() {
&flagStatus, &flagStatus,
"status", command.BoolFlag(false), "status", command.BoolFlag(false),
"Display cure status if available", "Display cure status if available",
).
Flag(
&flagReport,
"report", command.StringFlag(""),
"Load cure status from this report file instead of cache",
) )
} }