diff options
Diffstat (limited to '')
-rw-r--r-- | src/go/plugin/go.d/agent/functions/input.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/agent/functions/input.go b/src/go/plugin/go.d/agent/functions/input.go new file mode 100644 index 000000000..cb50c54d0 --- /dev/null +++ b/src/go/plugin/go.d/agent/functions/input.go @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package functions + +import ( + "bufio" + "os" +) + +type input interface { + lines() chan string +} + +var stdinInput = func() input { + r := &stdinReader{chLines: make(chan string)} + go r.run() + return r +}() + +type stdinReader struct { + chLines chan string +} + +func (in *stdinReader) run() { + sc := bufio.NewScanner(bufio.NewReader(os.Stdin)) + + for sc.Scan() { + text := sc.Text() + in.chLines <- text + } +} + +func (in *stdinReader) lines() chan string { + return in.chLines +} |