Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit 6b0a0d3

Browse files
committed
AcivityWriter
1 parent 174c866 commit 6b0a0d3

File tree

2 files changed

+15
-31
lines changed

2 files changed

+15
-31
lines changed

cmd/coder/shell.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,16 @@ func runCommand(ctx context.Context, envName string, command string, args []stri
144144
stdin := process.Stdin()
145145
defer stdin.Close()
146146

147-
ap := &activity.Pusher{Source: "ssh", EnvID: env.ID, Client: entClient}
147+
ap := &activity.Pusher{Source: sshActivityName, EnvID: env.ID, Client: entClient}
148148
defer ap.Start()()
149149

150-
activity.Copy(ap, stdin, os.Stdin)
150+
wr := activity.Writer(ap, stdin)
151+
io.Copy(wr, os.Stdin)
151152
}()
152153
go io.Copy(os.Stdout, process.Stdout())
153154
go io.Copy(os.Stderr, process.Stderr())
154155

155156
return process.Wait()
156157
}
158+
159+
const sshActivityName = "ssh"

internal/activity/copy.go

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,16 @@ package activity
22

33
import "io"
44

5-
// Copy copyes src to dst, pushing activity when bytes are read from src.
6-
func Copy(p *Pusher, dst io.Writer, src io.Reader) (written int64, err error) {
7-
buf := make([]byte, 32*1024)
8-
9-
for {
10-
nr, er := src.Read(buf)
11-
if nr > 0 {
12-
p.Push()
5+
type activityWriter struct {
6+
p *Pusher
7+
wr io.Writer
8+
}
139

14-
nw, ew := dst.Write(buf[0:nr])
15-
if nw > 0 {
16-
written += int64(nw)
17-
}
18-
if ew != nil {
19-
err = ew
20-
break
21-
}
22-
if nr != nw {
23-
err = io.ErrShortWrite
24-
break
25-
}
26-
}
27-
if er != nil {
28-
if er != io.EOF {
29-
err = er
30-
}
31-
break
32-
}
33-
}
10+
func (w *activityWriter) Write(p []byte) (n int, err error) {
11+
w.p.Push()
12+
return w.wr.Write(p)
13+
}
3414

35-
return written, err
15+
func Writer(p *Pusher, wr io.Writer) io.Writer {
16+
return &activityWriter{p: p, wr: wr}
3617
}

0 commit comments

Comments
 (0)