diff options
-rw-r--r-- | main.go | 14 | ||||
-rw-r--r-- | recording/runner.go | 5 |
2 files changed, 15 insertions, 4 deletions
@@ -7,6 +7,7 @@ import ( "fmt" "github.com/akamensky/argparse" "github.com/spf13/viper" + "log" "os" "os/signal" "sync" @@ -114,8 +115,11 @@ func main() { for _, task := range tasks { fmt.Println(task.String()) } - fmt.Println("========================") + fmt.Println("") + logger := log.Default() + + logger.Printf("Starting tasks...") chResult := make(chan recording.TaskResult) wg := sync.WaitGroup{} ctx, cancelTasks := context.WithCancel(context.Background()) @@ -131,18 +135,20 @@ func main() { chSigInt := make(chan os.Signal) signal.Notify(chSigInt, os.Interrupt) +loop: for { select { case <-chSigInt: - fmt.Println("Stopping...") + logger.Println("YABR is stopped.") cancelTasks() + break loop case result := <-chResult: err := result.Error if err != nil { - fmt.Printf("A task stopped with an error (room %v): %v\n", + logger.Printf("A task stopped with an error (room %v): %v\n", result.Task.RoomId, result.Error) } else { - fmt.Printf("Task stopped (room %v): %v\n", + logger.Printf("Task stopped (room %v): %v\n", result.Task.RoomId, result.Task.String()) } } diff --git a/recording/runner.go b/recording/runner.go index d4e5a96..bcea9a7 100644 --- a/recording/runner.go +++ b/recording/runner.go @@ -201,6 +201,11 @@ func watcherRecoverableLoop( chWatcherEvent, ) + // the context is cancelled, stop watching + if errors.Is(err, context.Canceled) { + return + } + switch errReason { case ErrSuccess: // stop normally, the context is closed |