package scanner import "os/exec" import "log" import "fmt" import "github.com/pkg/errors" type ExecutableWorker struct { Name string Path string argsFmt string } func newExecutableWorker(name string, argsFmt string) ExecutableWorker { path, err := exec.LookPath(name) if err != nil { log.Printf("WARN: Darktable was not found, RAW conversion will be disabled") } return ExecutableWorker{ Name: name, Path: path, argsFmt: argsFmt, } } func (execWorker *ExecutableWorker) EncodeJpeg(inputPath string, outputPath string, jpegQuality int) error { args := fmt.Sprintf(execWorker.argsFmt, inputPath, outputPath, jpegQuality) cmd := exec.Command(execWorker.Path, args) if err := cmd.Run(); err != nil { return errors.Wrapf(err, "error encoding image using '%s'", execWorker.Name) } return nil } var DarktableCli = newExecutableWorker("darktable-cli", "%s %s --core --conf plugins/imageio/format/jpeg/quality=%d")