summaryrefslogtreecommitdiff
path: root/plugin.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-14 22:16:14 -0600
committerJeff Carr <[email protected]>2024-12-14 22:16:14 -0600
commitdaca292a124bcd8e7074a9192290868bf2ea4693 (patch)
tree052e70f9e3aab66284a40ca0ccc31c0f561c1079 /plugin.go
parent2edbef24dc4459649f49ce29565ebe3ac405a8ec (diff)
actually fucking show the plugin path that worksv0.22.14
Diffstat (limited to 'plugin.go')
-rw-r--r--plugin.go75
1 files changed, 35 insertions, 40 deletions
diff --git a/plugin.go b/plugin.go
index 5ed7bd8..72b3112 100644
--- a/plugin.go
+++ b/plugin.go
@@ -9,6 +9,7 @@ import (
"embed"
"errors"
"os"
+ "path/filepath"
"plugin"
"go.wit.com/log"
@@ -126,76 +127,70 @@ func searchPaths(name string) *aplug {
var err error
// first try to load the embedded plugin file
- filename = "resources/" + name + ".so"
- pfile, err = me.resFS.ReadFile(filename)
+ // always try this first as it should have been
+ // tested by whomever compiled your binary
+ // todo: fix this so it does not have to be written to /tmp/
+ resname := filepath.Join("resources/", name+".so")
+ pfile, err = me.resFS.ReadFile(resname)
if err == nil {
- filename = "/tmp/" + name + ".so"
+ tmpname := filepath.Join("/tmp/", name+".so")
log.Log(WARN, "searchPaths() using toolkit embedded in executable")
- log.Log(WARN, "searchPaths() resource file", name, filename, len(pfile))
- f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+ log.Log(WARN, "searchPaths() resource file", tmpname, resname, len(pfile))
+ f, _ := os.OpenFile(tmpname, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
f.Write(pfile)
f.Close()
- p := initToolkit(name, filename)
+ p := initToolkit(name, tmpname)
if p != nil {
+ log.Log(NOW, "gui.Init() loaded", resname, "ok!")
return p
}
} else {
- log.Log(INFO, "searchPaths()", filename, "was not embedded in the binary")
+ log.Log(INFO, "searchPaths()", resname, "was not embedded in the binary")
}
// attempt to write out the file from the internal resource
+ // is this the same as above. todo: sort this out.
filename = "resources/" + name + ".so"
p := initToolkit(name, filename)
if p != nil {
+ log.Log(NOW, "gui.Init() loaded", filename, "ok!")
return p
}
+ // first check the user's home dir
homeDir, err := os.UserHomeDir()
if err != nil {
- log.Error(err, "os.UserHomeDir() error. giving up")
- return nil
- }
-
- filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + ".so"
- p = initToolkit(name, filename)
- if p != nil {
- return p
- }
-
- filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + "/" + name + ".so"
- p = initToolkit(name, filename)
- if p != nil {
- return p
- }
-
- // this is the "default" location when built with the autotypist
- filename = homeDir + "/go/lib/" + name + ".so"
- p = initToolkit(name, filename)
- if p != nil {
- return p
- }
+ log.Error(err, "os.UserHomeDir() error", err)
+ } else {
+ // first look in the toolkit build directory
+ filename = homeDir + "/go/src/go.wit.com/toolkits/" + name + "/" + name + ".so"
+ p = initToolkit(name, filename)
+ if p != nil {
+ log.Log(NOW, "gui.Init() loaded", filename, "ok!")
+ return p
+ }
- filename = homeDir + "/go/lib/toolkits/" + name + ".so"
- p = initToolkit(name, filename)
- if p != nil {
- return p
+ // this is the "default" location when built and installed locally
+ filename = homeDir + "/go/lib/go-gui/" + name + ".so"
+ p = initToolkit(name, filename)
+ if p != nil {
+ log.Log(NOW, "gui.Init() loaded", filename, "ok!")
+ return p
+ }
}
+ // fall back to the system packages
filename = "/usr/lib/go-gui/" + name + ".so"
p = initToolkit(name, filename)
if p != nil {
+ log.Log(NOW, "gui.Init() loaded", filename, "ok!")
return p
}
- filename = "/usr/lib/go-gui/latest/" + name + ".so"
- p = initToolkit(name, filename)
- if p != nil {
- return p
- }
-
- filename = "/usr/local/lib/gui/toolkits/" + name + ".so"
+ filename = "/usr/local/lib/go-gui/" + name + ".so"
p = initToolkit(name, filename)
if p != nil {
+ log.Log(NOW, "gui.Init() loaded", filename, "ok!")
return p
}
return nil