func()

in internal/kubelib/logs.go [205:240]


func (f *logsFollower) followPodLog(ctx context.Context, podLog podLog) error {
	if _, err := fmt.Fprintf(f.out, "Following logs of %s/%s...\n", podLog.target.Namespace, podLog.target.Name); err != nil {
		return err
	}

	logsStream, err := podLog.request.Stream(ctx)
	if err != nil {
		return err
	}
	defer func() {
		_ = logsStream.Close()
	}()

	r := bufio.NewReader(logsStream)

	out := f.out
	if f.addPrefix {
		out = &prefixWriter{
			prefix: []byte(fmt.Sprintf("[%s/%s] ", podLog.target.Namespace, podLog.target.Name)),
			w:      out,
		}
	}

	for {
		line, err := r.ReadBytes('\n')
		if _, writeErr := out.Write(line); writeErr != nil {
			return writeErr
		}
		if err != nil {
			if err == io.EOF {
				return nil
			}
			return err
		}
	}
}