package main import ( "os" "os/signal" "sync/atomic" "syscall" "gitea.k3s.k0.nu/tools/photocli/internal/photos" ) var version = "dev" func main() { sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) done := make(chan struct{}) var rc atomic.Int32 go func() { rc.Store(int32(run(os.Args[1:], os.Stdout, os.Stderr, photos.DefaultBridge))) close(done) }() select { case <-done: case <-sigCh: photos.DefaultBridge.Cancel() os.Stderr.Write([]byte("\nreceived signal, finishing current file...\n")) <-done } os.Exit(int(rc.Load())) }