summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--plugin.go75
2 files changed, 38 insertions, 41 deletions
diff --git a/Makefile b/Makefile
index b37bb3f..3adf833 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,12 @@
-all:
+all: goimports vet
@echo
@echo This is the core gui package 'go.wit.com/gui/gui'
@echo
@echo It creates a binary tree of widgets
@echo The widgets are things like Windows, Buttons, Labels, etc
@echo
+
+vet:
@GO111MODULE=off go vet
@echo go vet: this go library package builds okay
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