func processLines()

in cmd/wfnconvert/wfnconvert.go [146:176]


func processLines(ctx context.Context, o *options, in <-chan []string, out chan<- []string) func() error {
	return func() error {
		var (
			ss   []string
			more bool
		)
		for {
			select {
			case ss, more = <-in:
				if !more {
					return nil
				}
			case <-ctx.Done():
				return ctx.Err()
			}
			if len(ss) == 0 {
				continue
			}
			s, err := process(ss[0], o)
			if err != nil {
				return fmt.Errorf("could not process %q: %v", ss[0], err)
			}
			ss[0] = s
			select {
			case out <- ss:
			case <-ctx.Done():
				return ctx.Err()
			}
		}
	}
}