diff options
| author | Jeff Carr <[email protected]> | 2024-12-14 22:16:14 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-12-14 22:16:14 -0600 |
| commit | daca292a124bcd8e7074a9192290868bf2ea4693 (patch) | |
| tree | 052e70f9e3aab66284a40ca0ccc31c0f561c1079 /plugin.go | |
| parent | 2edbef24dc4459649f49ce29565ebe3ac405a8ec (diff) | |
actually fucking show the plugin path that worksv0.22.14
Diffstat (limited to 'plugin.go')
| -rw-r--r-- | plugin.go | 75 |
1 files changed, 35 insertions, 40 deletions
@@ -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 |
