summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go73
1 files changed, 62 insertions, 11 deletions
diff --git a/main.go b/main.go
index bd6833d..1a5be65 100644
--- a/main.go
+++ b/main.go
@@ -5,12 +5,16 @@ package main
import (
"debug/buildinfo"
+ "embed"
"fmt"
"os"
+ "os/exec"
"path/filepath"
+ "plugin"
"unicode"
"go.wit.com/dev/alexflint/arg"
+ "go.wit.com/gui"
"go.wit.com/log"
)
@@ -18,9 +22,16 @@ import (
var VERSION string
var BUILDTIME string
+// used for shell auto completion
+var ARGNAME string = "fixup" // todo: get this from $0 ?
+
+//go:embed resources/*
+var resources embed.FS
+
func main() {
me = new(autoType)
- me.argpp = arg.MustParse(&argv)
+ gui.InitArg()
+ me.pp = arg.MustParse(&argv)
if argv.Bash {
argv.doBash()
@@ -31,12 +42,21 @@ func main() {
os.Exit(0)
}
- if argv.Drives != nil {
- doDrives()
- doDrives2()
- }
+ // checkPlug("../../../toolkits/gocui/gocui.so")
+ // checkPlug("/usr/lib/go-gui-toolkits/gocui.v0.22.46.so")
+
+ /*
+ if argv.Drives != nil {
+ doDrives()
+ doDrives2()
+ }
+ */
- listenForBlockEvents()
+ // doDrives()
+ // okExit("everything compiled")
+
+ go listenForBlockEvents()
+ doGui()
okExit("everything compiled")
}
@@ -71,26 +91,57 @@ func dumpDebug() {
// Get absolute path of the currently running binary
exePath, err := os.Executable()
if err != nil {
- fmt.Println("Error getting executable path:", err)
+ log.Println("Error getting executable path:", err)
return
}
// Resolve symlinks if necessary
exePath, err = filepath.EvalSymlinks(exePath)
if err != nil {
- fmt.Println("Error resolving symlink:", err)
+ log.Println("Error resolving symlink:", err)
return
}
// Read build info
bi, err := buildinfo.ReadFile(exePath)
if err != nil {
- fmt.Println("Error reading build info:", err)
+ log.Println("Error reading build info:", err)
return
}
- fmt.Println("Go Version:", bi.GoVersion)
+ log.Println("Go Version:", bi.GoVersion)
for _, dep := range bi.Deps {
- fmt.Printf("Dependency: %s %s\n", dep.Path, dep.Version)
+ log.Printf("Dependency: %s %s\n", dep.Path, dep.Version)
+ }
+}
+
+func checkPlug(pluginPath string) *plugin.Plugin {
+ if err := checkPluginViaSubprocess(pluginPath); err != nil {
+ fmt.Printf("Plugin check failed: %v\n", err)
+ return nil
+ }
+
+ p, err := plugin.Open(pluginPath)
+ if err != nil {
+ log.Fatalf("plugin.Open failed: %v", err)
+ }
+
+ log.Println("Plugin loaded successfully.")
+ return p
+}
+
+func checkPluginViaSubprocess(path string) error {
+ exe, err := os.Executable()
+ if err != nil {
+ return fmt.Errorf("failed to get executable path: %w", err)
}
+ resolved, err := filepath.EvalSymlinks(exe)
+ if err != nil {
+ return fmt.Errorf("failed to resolve executable symlink: %w", err)
+ }
+
+ cmd := exec.Command(resolved, "--gui-check-plugin", path)
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ return cmd.Run()
}