Merge pull request #5527 from samuelkarp/freebsd-ctr-exec
ctr: make exec pty behavior consistent with run
This commit is contained in:
commit
0a92694e0a
@ -114,29 +114,35 @@ var execCommand = cli.Command{
|
||||
stdinC = &stdinCloser{
|
||||
stdin: os.Stdin,
|
||||
}
|
||||
con console.Console
|
||||
)
|
||||
|
||||
if logURI := context.String("log-uri"); logURI != "" {
|
||||
fifoDir := context.String("fifo-dir")
|
||||
logURI := context.String("log-uri")
|
||||
ioOpts := []cio.Opt{cio.WithFIFODir(fifoDir)}
|
||||
switch {
|
||||
case tty && logURI != "":
|
||||
return errors.New("can't use log-uri with tty")
|
||||
case logURI != "" && fifoDir != "":
|
||||
return errors.New("can't use log-uri with fifo-dir")
|
||||
|
||||
case tty:
|
||||
con = console.Current()
|
||||
defer con.Reset()
|
||||
if err := con.SetRaw(); err != nil {
|
||||
return err
|
||||
}
|
||||
ioCreator = cio.NewCreator(append([]cio.Opt{cio.WithStreams(con, con, nil), cio.WithTerminal}, ioOpts...)...)
|
||||
|
||||
case logURI != "":
|
||||
uri, err := url.Parse(logURI)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if dir := context.String("fifo-dir"); dir != "" {
|
||||
return errors.New("can't use log-uri with fifo-dir")
|
||||
}
|
||||
|
||||
if tty {
|
||||
return errors.New("can't use log-uri with tty")
|
||||
}
|
||||
|
||||
ioCreator = cio.LogURI(uri)
|
||||
} else {
|
||||
cioOpts := []cio.Opt{cio.WithStreams(stdinC, os.Stdout, os.Stderr), cio.WithFIFODir(context.String("fifo-dir"))}
|
||||
if tty {
|
||||
cioOpts = append(cioOpts, cio.WithTerminal)
|
||||
}
|
||||
ioCreator = cio.NewCreator(cioOpts...)
|
||||
|
||||
default:
|
||||
ioCreator = cio.NewCreator(append([]cio.Opt{cio.WithStreams(stdinC, os.Stdout, os.Stderr)}, ioOpts...)...)
|
||||
}
|
||||
|
||||
process, err := task.Exec(ctx, context.String("exec-id"), pspec, ioCreator)
|
||||
@ -156,31 +162,20 @@ var execCommand = cli.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
var con console.Console
|
||||
if tty {
|
||||
con = console.Current()
|
||||
defer con.Reset()
|
||||
if err := con.SetRaw(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if !detach {
|
||||
if tty {
|
||||
if err := HandleConsoleResize(ctx, process, con); err != nil {
|
||||
logrus.WithError(err).Error("console resize")
|
||||
}
|
||||
} else {
|
||||
sigc := commands.ForwardAllSignals(ctx, process)
|
||||
defer commands.StopCatch(sigc)
|
||||
}
|
||||
}
|
||||
|
||||
if err := process.Start(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
if detach {
|
||||
return nil
|
||||
}
|
||||
if tty {
|
||||
if err := HandleConsoleResize(ctx, process, con); err != nil {
|
||||
logrus.WithError(err).Error("console resize")
|
||||
}
|
||||
} else {
|
||||
sigc := commands.ForwardAllSignals(ctx, process)
|
||||
defer commands.StopCatch(sigc)
|
||||
}
|
||||
status := <-statusC
|
||||
code, _, err := status.Result()
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user