Add timeout for reading from stdin
This commit is contained in:
parent
4de4a4aee2
commit
16bf5ace2a
1 changed files with 14 additions and 3 deletions
17
main.go
17
main.go
|
@ -6,12 +6,13 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var noVersion = "dev"
|
var noVersion = "dev"
|
||||||
var version string
|
var version string
|
||||||
|
|
||||||
func readFromConsole() string {
|
func readFromConsole(result chan string) {
|
||||||
var text, line string
|
var text, line string
|
||||||
var err error
|
var err error
|
||||||
counter := 0
|
counter := 0
|
||||||
|
@ -29,7 +30,8 @@ func readFromConsole() string {
|
||||||
Error.F("Error in reading text from console\n%s", err)
|
Error.F("Error in reading text from console\n%s", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
return strings.TrimRight(text, "\n")
|
result <- strings.TrimRight(text, "\n")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func toList(input string) []string {
|
func toList(input string) []string {
|
||||||
|
@ -100,7 +102,16 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if flag.NArg() == 0 {
|
if flag.NArg() == 0 {
|
||||||
text = readFromConsole()
|
result := make(chan string, 1)
|
||||||
|
go readFromConsole(result)
|
||||||
|
select {
|
||||||
|
case text = <-result:
|
||||||
|
Info.Ln("text read from console")
|
||||||
|
case <-time.After(5 * time.Minute):
|
||||||
|
Error.Ln("timeout reading from console")
|
||||||
|
os.Exit(3)
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
for _, arg := range flag.Args() {
|
for _, arg := range flag.Args() {
|
||||||
text += fmt.Sprintf("%s\n", arg)
|
text += fmt.Sprintf("%s\n", arg)
|
||||||
|
|
Loading…
Reference in a new issue