Files
gokill/triggers/triggers.go
2023-11-11 15:28:35 +01:00

47 lines
892 B
Go

package triggers
import (
"fmt"
"github.com/k4lipso/gokill/internal"
)
type Trigger interface {
Listen()
Create(internal.KillSwitchConfig) (Trigger, error)
}
type DocumentedTrigger interface {
internal.Documenter
Trigger
}
func NewTrigger(config internal.KillSwitchConfig) (Trigger, error) {
for _, availableTrigger := range GetAllTriggers() {
if config.Type == availableTrigger.GetName() {
return availableTrigger.Create(config)
}
}
return nil, fmt.Errorf("Error parsing config: Trigger with type %s does not exists", config.Type)
}
func GetAllTriggers() []DocumentedTrigger {
return []DocumentedTrigger{
EthernetDisconnect{},
ReceiveTelegram{},
TimeOut{},
UsbDisconnect{},
}
}
func GetDocumenters() []internal.Documenter {
var result []internal.Documenter
for _, action := range GetAllTriggers() {
result = append(result, action)
}
return result
}