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")
|
log.Fatal("interval must be greater or equal to zero")
|
||||||
}
|
}
|
||||||
var plugin Plugin
|
var plugin Plugin
|
||||||
|
var pluginName string
|
||||||
platformErrors := ""
|
platformErrors := ""
|
||||||
for _, f := range Plugins {
|
for _, pluginInfo := range Plugins {
|
||||||
|
pluginName = pluginInfo.Name
|
||||||
var err error
|
var err error
|
||||||
plugin, err = f()
|
plugin, err = pluginInfo.Init()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
} else if _, ok := err.(UnsupportedPlatformError); ok {
|
} else if _, ok := err.(UnsupportedPlatformError); ok {
|
||||||
platformErrors += err.Error() + "\n"
|
platformErrors += fmt.Sprintf("%s plugin: %v\n", pluginName, err)
|
||||||
} else {
|
} else {
|
||||||
log.Fatal(err)
|
log.Fatal(fmt.Sprintf("%s plugin: %v", pluginName, err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if plugin == nil {
|
if plugin == nil {
|
||||||
|
|
@ -212,6 +214,7 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := processCommand(plugin, message); err != nil {
|
if err := processCommand(plugin, message); err != nil {
|
||||||
|
log.Print(fmt.Sprintf("%s plugin: %v", pluginName, err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
plugin.go
16
plugin.go
|
|
@ -19,20 +19,22 @@
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "fmt"
|
type PluginInfo struct {
|
||||||
|
Name string
|
||||||
|
Init func() (Plugin, error)
|
||||||
|
}
|
||||||
|
|
||||||
var Plugins [](func() (Plugin, error)) = [](func() (Plugin, error)){
|
var Plugins []PluginInfo = []PluginInfo{
|
||||||
InitX11Plugin,
|
{"X11", InitX11Plugin},
|
||||||
InitWindowsPlugin,
|
{"Windows", InitWindowsPlugin},
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnsupportedPlatformError struct {
|
type UnsupportedPlatformError struct {
|
||||||
name string
|
err error
|
||||||
message string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UnsupportedPlatformError) Error() string {
|
func (e UnsupportedPlatformError) Error() string {
|
||||||
return fmt.Sprintf("%s plugin: %s", e.name, e.message)
|
return e.err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
type Plugin interface {
|
type Plugin interface {
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ func InitWindowsPlugin() (Plugin, error) {
|
||||||
p.userDLL = syscall.NewLazyDLL("user32.dll")
|
p.userDLL = syscall.NewLazyDLL("user32.dll")
|
||||||
p.sendInputProc = p.userDLL.NewProc("SendInput")
|
p.sendInputProc = p.userDLL.NewProc("SendInput")
|
||||||
if err := p.sendInputProc.Find(); err != nil {
|
if err := p.sendInputProc.Find(); err != nil {
|
||||||
return nil, UnsupportedPlatformError{"Windows", err.Error()}
|
return nil, UnsupportedPlatformError{err}
|
||||||
}
|
}
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
func InitWindowsPlugin() (Plugin, error) {
|
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) {
|
func InitX11Plugin() (Plugin, error) {
|
||||||
display := C.XOpenDisplay(nil)
|
display := C.XOpenDisplay(nil)
|
||||||
if display == 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
|
return &x11Plugin{display: display}, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
func InitX11Plugin() (Plugin, error) {
|
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