Projects STRLCPY cdebug Commits ee17491a
🤬
  • ■ ■ ■ ■ ■ ■
    cmd/exec/exec.go
    skipped 5 lines
    6 6   "errors"
    7 7   "fmt"
    8 8   "io"
     9 + "os"
    9 10   "strings"
    10 11   "text/template"
    11 12   
    skipped 132 lines
    144 145   if err != nil {
    145 146   return err
    146 147   }
    147  - 
    148 148   if target.State == nil || !target.State.Running {
    149 149   return errors.New("target container found but it's not running")
    150 150   }
    skipped 12 lines
    163 163   Cmd: []string{
    164 164   "-c",
    165 165   mustRenderTemplate(
     166 + cli,
    166 167   chrootEntrypoint,
    167 168   map[string]any{
    168 169   "ID": runID,
    skipped 101 lines
    270 271   }
    271 272   
    272 273   if err := s.stream(ctx); err != nil {
    273  - logrus.WithError(err).Warn("ioStreamer.stream() failed")
     274 + logrus.Debugf("ioStreamer.stream() failed: %s", err)
    274 275   }
    275 276   }()
    276 277   
    skipped 67 lines
    344 345   return "cdebug-" + runID
    345 346  }
    346 347   
    347  -func mustRenderTemplate(t *template.Template, data any) string {
     348 +func mustRenderTemplate(cli cliutil.CLI, t *template.Template, data any) string {
    348 349   var buf bytes.Buffer
    349 350   if err := t.Execute(&buf, data); err != nil {
    350  - panic(fmt.Errorf("cannot render template %q: %w", t.Name(), err))
     351 + cli.PrintErr("Cannot render template %q: %w", t.Name(), err)
     352 + os.Exit(1)
    351 353   }
    352 354   return buf.String()
    353 355  }
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    cmd/portforward/portforward.go
    skipped 102 lines
    103 103   if err != nil {
    104 104   return err
    105 105   }
    106  - 
    107  - // TODO: Check that target has at least 1 IP!
     106 + if target.State == nil || !target.State.Running {
     107 + return errors.New("target container found but it's not running")
     108 + }
    108 109   
    109 110   if err := client.ImagePullEx(ctx, helperImage, types.ImagePullOptions{}); err != nil {
    110 111   return fmt.Errorf("cannot pull port-forwarder helper image %q: %w", helperImage, err)
    skipped 42 lines
    153 154   return fmt.Errorf("cannot inspect forwarder container: %w", err)
    154 155   }
    155 156   
    156  - // TODO: Multi-network support.
    157  - targetIP := target.NetworkSettings.Networks["bridge"].IPAddress
    158  - for remotePort, localBindings := range forwarder.NetworkSettings.Ports {
    159  - for _, binding := range localBindings {
    160  - switch opts.output {
    161  - case outFormatText:
    162  - local := net.JoinHostPort(binding.HostIP, binding.HostPort)
    163  - remote := targetIP + ":" + string(remotePort)
    164  - cli.PrintOut("Forwarding %s to %s's %s\n", local, target.Name[1:], remote)
    165  - case outFormatJSON:
    166  - cli.PrintOut(jsonutil.Dump(map[string]string{
    167  - "localHost": binding.HostIP,
    168  - "localPort": binding.HostPort,
    169  - "remoteHost": targetIP,
    170  - "remotePort": string(remotePort),
    171  - }))
    172  - default:
    173  - panic("unreachable!")
    174  - }
    175  - }
    176  - }
     157 + output(cli, forwardings, forwarder, opts.output)
    177 158   
    178 159   sigCh := make(chan os.Signal, 128)
    179 160   signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
    skipped 21 lines
    201 182   }
    202 183   
    203 184   return nil
     185 +}
     186 + 
     187 +func output(
     188 + cli cliutil.CLI,
     189 + forwardings forwardingList,
     190 + forwarder types.ContainerJSON,
     191 + outFormat string,
     192 +) {
     193 + targetIP := target.NetworkSettings.Networks["bridge"].IPAddress
     194 + for remotePort, localBindings := range forwarder.NetworkSettings.Ports {
     195 + for _, binding := range localBindings {
     196 + switch opts.output {
     197 + case outFormatText:
     198 + local := net.JoinHostPort(binding.HostIP, binding.HostPort)
     199 + remote := targetIP + ":" + string(remotePort)
     200 + cli.PrintOut("Forwarding %s to %s's %s\n", local, target.Name[1:], remote)
     201 + case outFormatJSON:
     202 + cli.PrintOut(jsonutil.Dump(map[string]string{
     203 + "localHost": binding.HostIP,
     204 + "localPort": binding.HostPort,
     205 + "remoteHost": targetIP,
     206 + "remotePort": string(remotePort),
     207 + }))
     208 + default:
     209 + panic("unreachable!")
     210 + }
     211 + }
     212 + }
    204 213  }
    205 214   
    206 215  type forwarding struct {
    skipped 78 lines
  • ■ ■ ■ ■
    e2e/portforward/docker_test.go
    skipped 47 lines
    48 48   return poll.Continue("waiting for `cdebug port-forward` to start up...")
    49 49   },
    50 50   poll.WithDelay(500*time.Millisecond),
    51  - poll.WithTimeout(3*time.Second),
     51 + poll.WithTimeout(30*time.Second),
    52 52   )
    53 53   
    54 54   // Probe target through forwarded port.
    skipped 13 lines
Please wait...
Page is in error, reload to recover