From 20f13257f7bd8fb5b98a0c2ade5f87410f1d6225 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?=
Date: Tue, 12 Jul 2022 14:39:30 +0200
Subject: [PATCH] Move "blender finder" from Worker-specific to common location
Manager's first-time wizard will have to be able to find Blender as well.
---
internal/find_blender/find_blender.go | 14 ++++++++++++++
internal/find_blender/nonwindows.go | 10 ++++++++++
internal/{worker => }/find_blender/windows.go | 7 ++++---
internal/{worker => }/find_blender/windows_test.go | 5 +++--
internal/worker/command_blender.go | 2 +-
internal/worker/find_blender/nonwindows.go | 11 -----------
web/app/src/views/FirstTimeWizardView.vue | 4 ++++
7 files changed, 36 insertions(+), 17 deletions(-)
create mode 100644 internal/find_blender/find_blender.go
create mode 100644 internal/find_blender/nonwindows.go
rename internal/{worker => }/find_blender/windows.go (97%)
rename internal/{worker => }/find_blender/windows_test.go (96%)
delete mode 100644 internal/worker/find_blender/nonwindows.go
diff --git a/internal/find_blender/find_blender.go b/internal/find_blender/find_blender.go
new file mode 100644
index 00000000..fbe790a2
--- /dev/null
+++ b/internal/find_blender/find_blender.go
@@ -0,0 +1,14 @@
+package find_blender
+
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import "errors"
+
+var ErrNotAvailable = errors.New("not available on this platform")
+
+// FindBlender returns the full path of a Blender executable.
+// `ErrNotAvailable` is returned if no "blender finder" is available for the current platform.
+func FindBlender() (string, error) {
+ // findBlender() is implemented in one of the platform-dependent files.
+ return findBlender()
+}
diff --git a/internal/find_blender/nonwindows.go b/internal/find_blender/nonwindows.go
new file mode 100644
index 00000000..2de0d0f3
--- /dev/null
+++ b/internal/find_blender/nonwindows.go
@@ -0,0 +1,10 @@
+//go:build !windows
+
+package find_blender
+
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// findBlender returns ErrNotAvailable, as the file association lookup is only available on Windows.
+func findBlender() (string, error) {
+ return "", ErrNotAvailable
+}
diff --git a/internal/worker/find_blender/windows.go b/internal/find_blender/windows.go
similarity index 97%
rename from internal/worker/find_blender/windows.go
rename to internal/find_blender/windows.go
index 8dec3c24..e821d7cb 100644
--- a/internal/worker/find_blender/windows.go
+++ b/internal/find_blender/windows.go
@@ -1,8 +1,9 @@
//go:build windows
-// SPDX-License-Identifier: GPL-3.0-or-later
package find_blender
+// SPDX-License-Identifier: GPL-3.0-or-later
+
import (
"errors"
"fmt"
@@ -13,8 +14,8 @@ import (
"unsafe"
)
-// FindBlender returns the full path of `blender.exe` associated with ".blend" files.
-func FindBlender() (string, error) {
+// findBlender returns the full path of `blender.exe` associated with ".blend" files.
+func findBlender() (string, error) {
exe, err := fileAssociation(".blend")
if err != nil {
return "", err
diff --git a/internal/worker/find_blender/windows_test.go b/internal/find_blender/windows_test.go
similarity index 96%
rename from internal/worker/find_blender/windows_test.go
rename to internal/find_blender/windows_test.go
index c126573f..129de070 100644
--- a/internal/worker/find_blender/windows_test.go
+++ b/internal/find_blender/windows_test.go
@@ -1,8 +1,9 @@
//go:build windows
-// SPDX-License-Identifier: GPL-3.0-or-later
package find_blender
+// SPDX-License-Identifier: GPL-3.0-or-later
+
import (
"flag"
"testing"
@@ -15,7 +16,7 @@ var withBlender = flag.Bool("withBlender", false, "run test that requires Blende
// TestFindBlender is a "weak" test, which actually accepts both happy and unhappy flows.
// It would be too fragile to always require a file association to be set up with Blender.
func TestFindBlender(t *testing.T) {
- exe, err := FindBlender()
+ exe, err := findBlender()
if err != nil {
assert.Empty(t, exe)
diff --git a/internal/worker/command_blender.go b/internal/worker/command_blender.go
index 5d31f98a..bd8025f6 100644
--- a/internal/worker/command_blender.go
+++ b/internal/worker/command_blender.go
@@ -16,7 +16,7 @@ import (
"github.com/google/shlex"
"github.com/rs/zerolog"
- "git.blender.org/flamenco/internal/worker/find_blender"
+ "git.blender.org/flamenco/internal/find_blender"
"git.blender.org/flamenco/pkg/api"
)
diff --git a/internal/worker/find_blender/nonwindows.go b/internal/worker/find_blender/nonwindows.go
deleted file mode 100644
index 90957561..00000000
--- a/internal/worker/find_blender/nonwindows.go
+++ /dev/null
@@ -1,11 +0,0 @@
-//go:build !windows
-
-// SPDX-License-Identifier: GPL-3.0-or-later
-package find_blender
-
-import "errors"
-
-// FindBlender returns an error, as the file association lookup is only available on Windows.
-func FindBlender() (string, error) {
- return "", errors.New("file association lookup is only available on Windows")
-}
diff --git a/web/app/src/views/FirstTimeWizardView.vue b/web/app/src/views/FirstTimeWizardView.vue
index 537c28b3..b7d2b1e4 100644
--- a/web/app/src/views/FirstTimeWizardView.vue
+++ b/web/app/src/views/FirstTimeWizardView.vue
@@ -27,6 +27,10 @@
{{ sharedStorageCheckResult.cause }}
+
+