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
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:
@@ -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, "/"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const statusPrefix = "status : "
|
||||||
if flagStatus {
|
if flagStatus {
|
||||||
const statusPrefix = "status : "
|
if r == nil {
|
||||||
r, err := cache.OpenStatus(rosa.Std.Load(p))
|
var f io.ReadSeekCloser
|
||||||
if err != nil {
|
f, err = cache.OpenStatus(rosa.Std.Load(p))
|
||||||
if errors.Is(err, os.ErrNotExist) {
|
if err != nil {
|
||||||
fmt.Println(
|
if errors.Is(err, os.ErrNotExist) {
|
||||||
statusPrefix + name + " was never cured",
|
fmt.Println(
|
||||||
)
|
statusPrefix + "not yet cured",
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return err
|
fmt.Print(statusPrefix)
|
||||||
|
_, err = io.Copy(os.Stdout, f)
|
||||||
|
if err = errors.Join(err, f.Close()); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Print(statusPrefix)
|
status, n := r.ArtifactOf(cache.Ident(rosa.Std.Load(p)))
|
||||||
_, err = io.Copy(os.Stdout, r)
|
if status == nil {
|
||||||
if err = errors.Join(err, r.Close()); err != nil {
|
fmt.Println(
|
||||||
return err
|
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",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user