diff options
Diffstat (limited to 'cmd/mbf/main.go')
| -rw-r--r-- | cmd/mbf/main.go | 40 |
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", ) } |
