MCPcopy
hub / github.com/nektos/act / waitForCommand

Method waitForCommand

pkg/container/docker_run.go:664–707  ·  view source on GitHub ↗
(ctx context.Context, isTerminal bool, resp client.HijackedResponse)

Source from the content-addressed store, hash-verified

662}
663
664func (cr *containerReference) waitForCommand(ctx context.Context, isTerminal bool, resp client.HijackedResponse) error {
665 logger := common.Logger(ctx)
666
667 cmdResponse := make(chan error)
668
669 go func() {
670 var outWriter io.Writer
671 outWriter = cr.input.Stdout
672 if outWriter == nil {
673 outWriter = os.Stdout
674 }
675 errWriter := cr.input.Stderr
676 if errWriter == nil {
677 errWriter = os.Stderr
678 }
679
680 var err error
681 if !isTerminal || os.Getenv("NORAW") != "" {
682 _, err = stdcopy.StdCopy(outWriter, errWriter, resp.Reader)
683 } else {
684 _, err = io.Copy(outWriter, resp.Reader)
685 }
686 cmdResponse <- err
687 }()
688
689 select {
690 case <-ctx.Done():
691 // send ctrl + c
692 _, err := resp.Conn.Write([]byte{3})
693 if err != nil {
694 logger.Warnf("Failed to send CTRL+C: %+s", err)
695 }
696
697 // we return the context canceled error to prevent other steps
698 // from executing
699 return ctx.Err()
700 case err := <-cmdResponse:
701 if err != nil {
702 logger.Error(err)
703 }
704
705 return nil
706 }
707}
708
709func (cr *containerReference) CopyTarStream(ctx context.Context, destPath string, tarStream io.Reader) error {
710 if common.Dryrun(ctx) {

Callers 1

execMethod · 0.95

Calls 6

LoggerFunction · 0.92
makeFunction · 0.85
GetenvMethod · 0.65
CopyMethod · 0.65
WriteMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected