aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-13 19:53:55 +0900
committerOphestra <cat@gensokyo.uk>2026-03-13 19:53:55 +0900
commit345cffddc285869d300f4ea5e6da88827e903e50 (patch)
tree0a8d5cfec3dc38a5a30a9ad5f079e179e251233c
parent49163758c8af57142ba3101befab2b89fb9580ff (diff)
cmd/mbf: optionally export output
This is for debugging for now, as no program consumes this format yet. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/mbf/main.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 81e2dfc2..2b4f2e10 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -434,7 +434,8 @@ func main() {
{
var (
- flagDump string
+ flagDump string
+ flagExport string
)
c.NewCommand(
"cure",
@@ -447,10 +448,34 @@ func main() {
return fmt.Errorf("unknown artifact %q", args[0])
} else if flagDump == "" {
pathname, _, err := cache.Cure(rosa.Std.Load(p))
- if err == nil {
- log.Println(pathname)
+ if err != nil {
+ return err
}
- return err
+ log.Println(pathname)
+
+ if flagExport != "" {
+ msg.Verbosef("exporting %s to %s...", args[0], flagExport)
+
+ var f *os.File
+ if f, err = os.OpenFile(
+ flagExport,
+ os.O_WRONLY|os.O_CREATE|os.O_EXCL,
+ 0400,
+ ); err != nil {
+ return err
+ } else if _, err = pkg.Flatten(
+ os.DirFS(pathname.String()),
+ ".",
+ f,
+ ); err != nil {
+ _ = f.Close()
+ return err
+ } else if err = f.Close(); err != nil {
+ return err
+ }
+ }
+
+ return nil
} else {
f, err := os.OpenFile(
flagDump,
@@ -474,6 +499,11 @@ func main() {
&flagDump,
"dump", command.StringFlag(""),
"Write IR to specified pathname and terminate",
+ ).
+ Flag(
+ &flagExport,
+ "export", command.StringFlag(""),
+ "Export cured artifact to specified pathname",
)
}