Files
photocli/cmd/photoscli/runmain.go
T
Ein Anderssono 2e73d01b40
pipeline / build (push) Has been cancelled
pipeline / test (push) Has been cancelled
v0.5.0: manifests, filters, logging, docs
2026-06-15 00:00:06 +02:00

33 lines
693 B
Go

package main
import (
"io"
"os"
"sync/atomic"
"gitea.k3s.k0.nu/tools/photocli/internal/photos"
)
func runMain(args []string, stdout, stderr *os.File, bridge photos.Bridge) int {
return runMainWithSignal(args, stdout, stderr, bridge, defaultSignalChan())
}
func runMainWithSignal(args []string, stdout *os.File, stderr io.Writer, bridge photos.Bridge, sigCh <-chan struct{}) int {
done := make(chan struct{})
var rc atomic.Int32
go func() {
rc.Store(int32(run(args, stdout, stderr, bridge)))
close(done)
}()
select {
case <-done:
case <-sigCh:
bridge.Cancel()
stderr.Write([]byte("\nreceived signal, finishing current file...\n"))
<-done
}
return int(rc.Load())
}