log plugin errors
This commit is contained in:
parent
fe568cd37c
commit
2eb0baaca1
6 changed files with 25 additions and 15 deletions
11
main.go
11
main.go
|
|
@ -156,16 +156,18 @@ func main() {
|
|||
log.Fatal("interval must be greater or equal to zero")
|
||||
}
|
||||
var plugin Plugin
|
||||
var pluginName string
|
||||
platformErrors := ""
|
||||
for _, f := range Plugins {
|
||||
for _, pluginInfo := range Plugins {
|
||||
pluginName = pluginInfo.Name
|
||||
var err error
|
||||
plugin, err = f()
|
||||
plugin, err = pluginInfo.Init()
|
||||
if err == nil {
|
||||
break
|
||||
} else if _, ok := err.(UnsupportedPlatformError); ok {
|
||||
platformErrors += err.Error() + "\n"
|
||||
platformErrors += fmt.Sprintf("%s plugin: %v\n", pluginName, err)
|
||||
} else {
|
||||
log.Fatal(err)
|
||||
log.Fatal(fmt.Sprintf("%s plugin: %v", pluginName, err))
|
||||
}
|
||||
}
|
||||
if plugin == nil {
|
||||
|
|
@ -212,6 +214,7 @@ func main() {
|
|||
return
|
||||
}
|
||||
if err := processCommand(plugin, message); err != nil {
|
||||
log.Print(fmt.Sprintf("%s plugin: %v", pluginName, err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
|||
16
plugin.go
16
plugin.go
|
|
@ -19,20 +19,22 @@
|
|||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
type PluginInfo struct {
|
||||
Name string
|
||||
Init func() (Plugin, error)
|
||||
}
|
||||
|
||||
var Plugins [](func() (Plugin, error)) = [](func() (Plugin, error)){
|
||||
InitX11Plugin,
|
||||
InitWindowsPlugin,
|
||||
var Plugins []PluginInfo = []PluginInfo{
|
||||
{"X11", InitX11Plugin},
|
||||
{"Windows", InitWindowsPlugin},
|
||||
}
|
||||
|
||||
type UnsupportedPlatformError struct {
|
||||
name string
|
||||
message string
|
||||
err error
|
||||
}
|
||||
|
||||
func (e UnsupportedPlatformError) Error() string {
|
||||
return fmt.Sprintf("%s plugin: %s", e.name, e.message)
|
||||
return e.err.Error()
|
||||
}
|
||||
|
||||
type Plugin interface {
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ func InitWindowsPlugin() (Plugin, error) {
|
|||
p.userDLL = syscall.NewLazyDLL("user32.dll")
|
||||
p.sendInputProc = p.userDLL.NewProc("SendInput")
|
||||
if err := p.sendInputProc.Find(); err != nil {
|
||||
return nil, UnsupportedPlatformError{"Windows", err.Error()}
|
||||
return nil, UnsupportedPlatformError{err}
|
||||
}
|
||||
return p, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
|
||||
package main
|
||||
|
||||
import "errors"
|
||||
|
||||
func InitWindowsPlugin() (Plugin, error) {
|
||||
return nil, UnsupportedPlatformError{"Windows", "disabled"}
|
||||
return nil, UnsupportedPlatformError{errors.New("disabled")}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ type x11Plugin struct {
|
|||
func InitX11Plugin() (Plugin, error) {
|
||||
display := C.XOpenDisplay(nil)
|
||||
if display == nil {
|
||||
return nil, UnsupportedPlatformError{"X11", "failed to connect to X server"}
|
||||
return nil, UnsupportedPlatformError{
|
||||
errors.New("failed to connect to X server")}
|
||||
}
|
||||
return &x11Plugin{display: display}, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
|
||||
package main
|
||||
|
||||
import "errors"
|
||||
|
||||
func InitX11Plugin() (Plugin, error) {
|
||||
return nil, UnsupportedPlatformError{"X11", "disabled"}
|
||||
return nil, UnsupportedPlatformError{errors.New("disabled")}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue