cmd/mbf: optionally enter cure container
All checks were successful
Test / Create distribution (push) Successful in 1m1s
Test / Sandbox (push) Successful in 2m42s
Test / Hakurei (push) Successful in 3m40s
Test / ShareFS (push) Successful in 3m43s
Test / Sandbox (race detector) (push) Successful in 5m10s
Test / Hakurei (race detector) (push) Successful in 6m16s
Test / Flake checks (push) Successful in 1m22s
All checks were successful
Test / Create distribution (push) Successful in 1m1s
Test / Sandbox (push) Successful in 2m42s
Test / Hakurei (push) Successful in 3m40s
Test / ShareFS (push) Successful in 3m43s
Test / Sandbox (race detector) (push) Successful in 5m10s
Test / Hakurei (race detector) (push) Successful in 6m16s
Test / Flake checks (push) Successful in 1m22s
This is very useful for troubleshooting failing tests and such. The ephemeral state is cleaned up by internal/pkg. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -436,6 +436,7 @@ func main() {
|
|||||||
{
|
{
|
||||||
var (
|
var (
|
||||||
flagDump string
|
flagDump string
|
||||||
|
flagEnter bool
|
||||||
flagExport string
|
flagExport string
|
||||||
)
|
)
|
||||||
c.NewCommand(
|
c.NewCommand(
|
||||||
@@ -445,9 +446,13 @@ func main() {
|
|||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
return errors.New("cure requires 1 argument")
|
return errors.New("cure requires 1 argument")
|
||||||
}
|
}
|
||||||
if p, ok := rosa.ResolveName(args[0]); !ok {
|
p, ok := rosa.ResolveName(args[0])
|
||||||
|
if !ok {
|
||||||
return fmt.Errorf("unknown artifact %q", args[0])
|
return fmt.Errorf("unknown artifact %q", args[0])
|
||||||
} else if flagDump == "" {
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
default:
|
||||||
pathname, _, err := cache.Cure(rosa.Std.Load(p))
|
pathname, _, err := cache.Cure(rosa.Std.Load(p))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -477,7 +482,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
} else {
|
|
||||||
|
case flagDump != "":
|
||||||
f, err := os.OpenFile(
|
f, err := os.OpenFile(
|
||||||
flagDump,
|
flagDump,
|
||||||
os.O_WRONLY|os.O_CREATE|os.O_EXCL,
|
os.O_WRONLY|os.O_CREATE|os.O_EXCL,
|
||||||
@@ -493,6 +499,15 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return f.Close()
|
return f.Close()
|
||||||
|
|
||||||
|
case flagEnter:
|
||||||
|
return cache.EnterExec(
|
||||||
|
ctx,
|
||||||
|
rosa.Std.Load(p),
|
||||||
|
true, os.Stdin, os.Stdout, os.Stderr,
|
||||||
|
rosa.AbsSystem.Append("bin", "mksh"),
|
||||||
|
"sh",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
).
|
).
|
||||||
@@ -505,6 +520,11 @@ func main() {
|
|||||||
&flagExport,
|
&flagExport,
|
||||||
"export", command.StringFlag(""),
|
"export", command.StringFlag(""),
|
||||||
"Export cured artifact to specified pathname",
|
"Export cured artifact to specified pathname",
|
||||||
|
).
|
||||||
|
Flag(
|
||||||
|
&flagEnter,
|
||||||
|
"enter", command.BoolFlag(false),
|
||||||
|
"Enter cure container with an interactive shell",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user