Sybren A. Stüvel fb65e55c98 Worker: improve warning when FFmpeg cannot be found
On Linux (at least my Ubuntu) the error from finding FFmpeg wasn't
identified as a "file not found" error, and thus the more abstract
"unexpected error" message was logged.

Now any error with "file not found" in the message is handled as such,
and just produces a warning without the word "error" in there.
2025-02-10 12:28:37 +01:00

52 lines
1.8 KiB
Go

package main
import (
"context"
"errors"
"io/fs"
"os/exec"
"strings"
"time"
"github.com/rs/zerolog/log"
"projects.blender.org/studio/flamenco/internal/find_blender"
"projects.blender.org/studio/flamenco/internal/find_ffmpeg"
"projects.blender.org/studio/flamenco/pkg/website"
)
// findFFmpeg tries to find FFmpeg, in order to show its version (if found) or a warning (if not).
func findFFmpeg() {
result, err := find_ffmpeg.Find()
switch {
case errors.Is(err, fs.ErrNotExist), strings.Contains(err.Error(), "file not found"):
log.Warn().Msg("FFmpeg could not be found on this system, jobs may not run correctly")
case err != nil:
log.Warn().AnErr("cause", err).Msg("there was an unexpected error finding FFmpeg on this system, jobs may not run correctly")
default:
log.Info().Str("path", result.Path).Str("version", result.Version).Msg("FFmpeg found on this system")
}
}
// findBlender tries to find Blender, in order to show its version (if found) or a message (if not).
func findBlender() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
helpMsg := "Flamenco Manager will have to supply the full path to Blender when tasks are sent " +
"to this Worker. For more info see " + website.DocVariablesURL
result, err := find_blender.Find(ctx)
switch {
case errors.Is(err, fs.ErrNotExist), errors.Is(err, exec.ErrNotFound):
log.Info().Msg("Blender could not be found. " + helpMsg)
case err != nil:
log.Warn().AnErr("cause", err).Msg("There was an error finding Blender on this system. " + helpMsg)
default:
log.Info().
Str("path", result.FoundLocation).
Str("version", result.BlenderVersion).
Msg("Blender found on this system, it will be used unless the Flamenco Manager configuration specifies a different path.")
}
}