| 245 | } |
| 246 | |
| 247 | func readInvocationStdin(inv *serpent.Invocation) (string, bool, error) { |
| 248 | if isTTYIn(inv) { |
| 249 | return "", false, nil |
| 250 | } |
| 251 | |
| 252 | bytes, err := io.ReadAll(inv.Stdin) |
| 253 | if err != nil { |
| 254 | return "", false, xerrors.Errorf("reading stdin: %w", err) |
| 255 | } |
| 256 | if len(bytes) == 0 { |
| 257 | return "", false, nil |
| 258 | } |
| 259 | |
| 260 | return string(bytes), true, nil |
| 261 | } |
| 262 | |
| 263 | // Shell helpers like echo usually append a line ending to piped stdin. We |
| 264 | // treat a single trailing LF or CRLF as suspicious, but avoid flagging values |