package commands import ( "context" "github.com/docker/buildx/monitor/types" "github.com/pkg/errors" ) type DisconnectCmd struct { m types.Monitor } func NewDisconnectCmd(m types.Monitor) types.Command { return &DisconnectCmd{m} } func (cm *DisconnectCmd) Info() types.CommandInfo { return types.CommandInfo{HelpMessage: "disconnect a client from a buildx server. Specific session ID can be specified an arg"} } func (cm *DisconnectCmd) Exec(ctx context.Context, args []string) error { target := cm.m.AttachedSessionID() if len(args) >= 2 { target = args[1] } else if target == "" { return errors.Errorf("no attaching session") } isProcess, err := isProcessID(ctx, cm.m, target) if err == nil && isProcess { sid := cm.m.AttachedSessionID() if sid == "" { return errors.Errorf("no attaching session") } if err := cm.m.DisconnectProcess(ctx, sid, target); err != nil { return errors.Errorf("disconnecting from process failed %v", target) } return nil } if err := cm.m.DisconnectSession(ctx, target); err != nil { return errors.Errorf("disconnecting from session failed: %v", err) } return nil }