diff options
Diffstat (limited to 'exes/all/main.go')
| -rw-r--r-- | exes/all/main.go | 72 | 
1 files changed, 72 insertions, 0 deletions
diff --git a/exes/all/main.go b/exes/all/main.go new file mode 100644 index 0000000..0d15450 --- /dev/null +++ b/exes/all/main.go @@ -0,0 +1,72 @@ +package main + +/* +#cgo LDFLAGS: -Lbuild -lall +#include "./build/all.h" +*/ +import "C" + +import ( +	"fmt" +	"os" +	"os/signal" +	"syscall" +	"time" + +	"github.com/Jeffail/gabs" +	"github.com/alicebob/miniredis/v2" + +	server "github.com/nats-io/nats-server/v2/server" +) + +func main() { +	// Intialise les logs de la librarie Rust +	C.init_logs() +	// Charge la configuration +	str := C.GoString(C.load_config()) + +	// Démarre une instance MiniRedis +	mr := miniredis.NewMiniRedis() +	err := mr.Start() + +	if err != nil { +		panic(err) +	} + +	// Démarre un serveur Nats +	opts := &server.Options{} +	opts.Host = "0.0.0.0" +	ns, err := server.NewServer(opts) + +	if err != nil { +		panic(err) +	} + +	go ns.Start() + +	if !ns.ReadyForConnections(4 * time.Second) { +		panic("not ready for connection") +	} + +	// Edite le json de configuration donné +	// Et injecte la configuration des servers Nats et MiniRedis +	json, _ := gabs.ParseJSON([]byte(str)) +	json.Set(fmt.Sprintf("redis://%s", mr.Addr()), "redis", "url") +	json.Set("localhost", "nats", "host") +	json.Set(1, "webhook", "discord", "client_id") + +	// Démarre une instance de nova +	instance := C.start_instance(C.CString(json.String())) + +	// Wait for a SIGINT +	c := make(chan os.Signal, 1) +	signal.Notify(c, +		syscall.SIGHUP, +		syscall.SIGINT, +		syscall.SIGTERM, +		syscall.SIGQUIT) +	<-c + +	println("Arret de nova all in one") +	C.stop_instance(instance) +}  | 
