add: accept Ctrl+C while wait-ing

This commit is contained in:
ShuheiKubota 2019-11-18 16:09:56 +09:00
parent 01d16d4cfd
commit 40f3f2163c
1 changed files with 10 additions and 0 deletions

View File

@ -5,7 +5,9 @@ import (
"errors"
"fmt"
"os"
"os/signal"
"strings"
"syscall"
"time"
"github.com/shu-go/gli"
@ -34,6 +36,11 @@ func (c waitCmd) Run(args []string) error {
ctx, _ = context.WithTimeout(context.Background(), c.Timeout.Duration())
}
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, os.Interrupt)
fmt.Println("Press Ctrl+C to cancel.")
waitLoop:
for {
wins, err := listAllWindows()
@ -53,6 +60,9 @@ waitLoop:
}
select {
case <-signalChan:
fmt.Fprintln(os.Stderr, "cancelled")
break waitLoop
case <-ctx.Done():
fmt.Fprintln(os.Stderr, "cancelled")
break waitLoop