1
Fork 0
photoview/api/scanner/executable_worker.go

48 lines
1.0 KiB
Go

package scanner
import "os/exec"
import "log"
import "fmt"
import "github.com/pkg/errors"
import "strings"
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(fmt.Sprintf("WARN: %s was not found", name))
}
return ExecutableWorker{
Name: name,
Path: path,
argsFmt: argsFmt,
}
}
func (execWorker *ExecutableWorker) isInstalled() bool {
return execWorker.Path != ""
}
func (execWorker *ExecutableWorker) EncodeJpeg(inputPath string, outputPath string, jpegQuality int) error {
args := fmt.Sprintf(execWorker.argsFmt, inputPath, outputPath, jpegQuality)
cmd := exec.Command(execWorker.Path, strings.Split(args, " ")...)
if err := cmd.Run(); err != nil {
return errors.Wrapf(err, "error encoding image using: %s %s", execWorker.Name, args)
}
return nil
}
var DarktableCli = newExecutableWorker("darktable-cli", "%s %s --core --conf plugins/imageio/format/jpeg/quality=%d")