
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.
52 lines
1.8 KiB
Go
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.")
|
|
}
|
|
}
|