Move skinstore loading to seperate file
This commit is contained in:
parent
99594330b6
commit
5102cf73b8
32
main.go
32
main.go
@ -2,11 +2,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/josephbmanley/OpenSkins-Common/datastore"
|
|
||||||
"github.com/josephbmanley/OpenSkins/pluginmanager"
|
"github.com/josephbmanley/OpenSkins/pluginmanager"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"os"
|
"os"
|
||||||
pas "plugin"
|
"plugin"
|
||||||
)
|
)
|
||||||
|
|
||||||
const plugindirectory = "./plugins"
|
const plugindirectory = "./plugins"
|
||||||
@ -18,33 +17,24 @@ func main() {
|
|||||||
log.Warningln(fmt.Sprintf("Failed to read plugins directory: %v", err.Error()))
|
log.Warningln(fmt.Sprintf("Failed to read plugins directory: %v", err.Error()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadedPlugins := []*plugin.Plugin{}
|
||||||
|
|
||||||
for _, file := range pluginFiles {
|
for _, file := range pluginFiles {
|
||||||
log.Infoln(fmt.Sprintf("Loading plugin: %v", file))
|
log.Infoln(fmt.Sprintf("Loading plugin: %v", file))
|
||||||
plugin, err := pas.Open(file)
|
plugin, err := plugin.Open(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(fmt.Sprintf("Failed to load plugin '%v': %v", file, err.Error()))
|
log.Fatalln(fmt.Sprintf("Failed to load plugin '%v': %v", file, err.Error()))
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
symSkinstore, err := plugin.Lookup("SkinstoreModule")
|
loadedPlugins = append(loadedPlugins, plugin)
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(fmt.Sprintf("Failed to load plugin '%v': %v", file, err.Error()))
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
var skinstore datastore.Skinstore
|
|
||||||
skinstore, ok := symSkinstore.(datastore.Skinstore)
|
|
||||||
if !ok {
|
|
||||||
log.Fatalln(fmt.Sprintf("Invalid type for Skinstore in plugin '%v'", file))
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = skinstore.Initialize()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(fmt.Sprintf("Failed to intialize Skinstore in plugin '%v'", file))
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = pluginmanager.LoadSkinstores(loadedPlugins)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(fmt.Sprintf("Failed to load skinstores '%v'", err.Error()))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
39
pluginmanager/skinstore.go
Normal file
39
pluginmanager/skinstore.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package pluginmanager
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"github.com/josephbmanley/OpenSkins-Common/datastore"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
"plugin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// LoadedSkinstores is a list of all loaded skinstores
|
||||||
|
var LoadedSkinstores []datastore.Skinstore = []datastore.Skinstore{}
|
||||||
|
|
||||||
|
// LoadSkinstores searches plugins for a skinstore object
|
||||||
|
// and adds it to the 'skinstores` array
|
||||||
|
func LoadSkinstores(plugins []*plugin.Plugin) error {
|
||||||
|
|
||||||
|
for _, plugin := range plugins {
|
||||||
|
|
||||||
|
symSkinstore, err := plugin.Lookup("SkinstoreModule")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(fmt.Sprintf("Failed to load plugin: %v", err.Error()))
|
||||||
|
}
|
||||||
|
|
||||||
|
var skinstore datastore.Skinstore
|
||||||
|
skinstore, ok := symSkinstore.(datastore.Skinstore)
|
||||||
|
if !ok {
|
||||||
|
return errors.New("Invalid type for Skinstore in plugin")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = skinstore.Initialize()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadedSkinstores = append(LoadedSkinstores, skinstore)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
Reference in New Issue
Block a user