func FollowLogs()

in internal/kubelib/logs.go [243:277]


func FollowLogs(
	ctx context.Context,
	client kubernetes.Interface,
	params *FollowLogsParams,
) error {
	if err := params.defaults(); err != nil {
		return err
	}

	pr, pw := io.Pipe()
	follower := &logsFollower{
		client:         client,
		namespace:      params.Namespace,
		selector:       params.Selector,
		container:      params.Container,
		maxConcurrency: params.MaxConcurrency,
		addPrefix:      params.AddPrefix,
		out:            pw,

		wg: new(sync.WaitGroup),

		podLogsChan:      make(chan podLog),
		handledTargets:   map[k8scorev1.ObjectReference]struct{}{},
		handledTargetsMu: new(sync.Mutex),
	}

	go func() {
		follower.Start(ctx)
		follower.Wait()
		_ = pw.Close()
	}()

	_, err := io.Copy(params.Output, pr)
	return err
}