Blender Finder: better reporting on timeout errors

Instead of just `signal: killed`, report that it actually took too long.
This commit is contained in:
Sybren A. Stüvel 2022-07-26 17:40:28 +02:00
parent fa79b81d5b
commit 1e3a2b5480

View File

@ -18,6 +18,7 @@ import (
var ( var (
ErrNotAvailable = errors.New("not available on this platform") ErrNotAvailable = errors.New("not available on this platform")
ErrNotBlender = errors.New("not a Blender executable") ErrNotBlender = errors.New("not a Blender executable")
ErrTimedOut = errors.New("version check took too long")
) )
// blenderVersionTimeout is how long `blender --version` is allowed to take, // blenderVersionTimeout is how long `blender --version` is allowed to take,
@ -101,7 +102,11 @@ func getBlenderVersion(ctx context.Context, commandline string) (string, error)
cmd := exec.CommandContext(cmdCtx, commandline, "--version") cmd := exec.CommandContext(cmdCtx, commandline, "--version")
stdoutStderr, err := cmd.CombinedOutput() stdoutStderr, err := cmd.CombinedOutput()
if err != nil { switch {
case errors.Is(cmdCtx.Err(), context.DeadlineExceeded):
logger.Warn().Stringer("timeout", blenderVersionTimeout).Msg("command timed out")
return "", fmt.Errorf("%s: %w", commandline, ErrTimedOut)
case err != nil:
logger.Info().Err(err).Str("output", string(stdoutStderr)).Msg("error running command") logger.Info().Err(err).Str("output", string(stdoutStderr)).Msg("error running command")
return "", err return "", err
} }