package main

import (
	"log"

	"github.com/hashicorp/go-plugin"
	hwinfoplugin "github.com/shayne/hwinfo-streamdeck/internal/hwinfo/plugin"
	hwsensorsservice "github.com/shayne/hwinfo-streamdeck/pkg/service"
)

func main() {
	service := hwinfoplugin.StartService()
	go func() {
		for {
			err := service.Recv()
			if err != nil {
				log.Printf("service recv failed: %v\n", err)
			}
		}
	}()

	plugin.Serve(&plugin.ServeConfig{
		HandshakeConfig: hwsensorsservice.Handshake,
		Plugins: map[string]plugin.Plugin{
			"hwinfoplugin": &hwsensorsservice.HardwareServicePlugin{Impl: &hwinfoplugin.Plugin{Service: service}},
		},

		// A non-nil value here enables gRPC serving for this plugin...
		GRPCServer: plugin.DefaultGRPCServer,
	})
}
