aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/mbf/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mbf/main.go')
-rw-r--r--cmd/mbf/main.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 1d260fe8..894f5a46 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -19,6 +19,7 @@ import (
"fmt"
"io"
"log"
+ "net"
"os"
"os/signal"
"path/filepath"
@@ -69,11 +70,20 @@ func main() {
var (
flagQuiet bool
+
+ addr net.UnixAddr
)
c := command.New(os.Stderr, log.Printf, "mbf", func([]string) error {
msg.SwapVerbose(!flagQuiet)
cm.ctx, cm.msg = ctx, msg
cm.base = os.ExpandEnv(cm.base)
+
+ addr.Net = "unix"
+ addr.Name = os.ExpandEnv(addr.Name)
+ if addr.Name == "" {
+ addr.Name = "daemon"
+ }
+
return nil
}).Flag(
&flagQuiet,
@@ -102,6 +112,10 @@ func main() {
),
"Do not restrict networked cure containers from connecting to host "+
"abstract UNIX sockets",
+ ).Flag(
+ &addr.Name,
+ "socket", command.StringFlag("$MBF_DAEMON_SOCKET"),
+ "Pathname of socket to bind to",
)
c.NewCommand(
@@ -267,6 +281,19 @@ func main() {
)
}
+ c.NewCommand(
+ "daemon",
+ "Service artifact IR with Rosa OS extensions",
+ func(args []string) error {
+ ul, err := net.ListenUnix("unix", &addr)
+ if err != nil {
+ return err
+ }
+ log.Printf("listening on pathname socket at %s", addr.Name)
+ return serve(ctx, log.Default(), &cm, ul)
+ },
+ )
+
{
var (
flagGentoo string
@@ -374,6 +401,7 @@ func main() {
flagDump string
flagEnter bool
flagExport string
+ flagRemote bool
)
c.NewCommand(
"cure",
@@ -450,6 +478,13 @@ func main() {
"sh",
)
})
+
+ case flagRemote:
+ pathname, err := cureRemote(ctx, &addr, rosa.Std.Load(p))
+ if err == nil {
+ log.Println(pathname)
+ }
+ return err
}
},
).
@@ -467,6 +502,11 @@ func main() {
&flagEnter,
"enter", command.BoolFlag(false),
"Enter cure container with an interactive shell",
+ ).
+ Flag(
+ &flagRemote,
+ "daemon", command.BoolFlag(false),
+ "Cure artifact on the daemon",
)
}