v0.5.0: manifests, filters, logging, docs
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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())
|
||||
}
|
||||
Reference in New Issue
Block a user