Eric Bower
·
13 Apr 24
cmd.go
1package shared
2
3import (
4 "fmt"
5 "io"
6 "log/slog"
7 "os"
8)
9
10type CmdSessionLogger struct {
11 Log *slog.Logger
12}
13
14func (c *CmdSessionLogger) Write(out []byte) (int, error) {
15 c.Log.Info(string(out))
16 return 0, nil
17}
18
19func (c *CmdSessionLogger) Exit(code int) error {
20 os.Exit(code)
21 return fmt.Errorf("panic %d", code)
22}
23
24func (c *CmdSessionLogger) Close() error {
25 return fmt.Errorf("closing")
26}
27
28func (c *CmdSessionLogger) Stderr() io.ReadWriter {
29 return nil
30}
31
32type CmdSession interface {
33 Write([]byte) (int, error)
34 Exit(code int) error
35 Close() error
36 Stderr() io.ReadWriter
37}