refactor triggger/action registration

This commit is contained in:
2023-09-30 18:49:12 +02:00
parent 64bce5827c
commit 0354d86796
7 changed files with 57 additions and 33 deletions

View File

@@ -8,23 +8,37 @@ import (
type Trigger interface {
Listen()
Create(internal.KillSwitchConfig) (Trigger, error)
}
type DocumentedTrigger interface {
internal.Documenter
Trigger
}
func NewTrigger(config internal.KillSwitchConfig) (Trigger, error) {
if config.Type == "Timeout" {
return NewTimeOut(config)
}
if config.Type == "EthernetDisconnect" {
return NewEthernetDisconnect(config)
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 GetDocumenters() []internal.Documenter {
return []internal.Documenter{
func GetAllTriggers() []DocumentedTrigger {
return []DocumentedTrigger{
TimeOut{},
EthernetDisconnect{},
}
}
func GetDocumenters() []internal.Documenter {
var result []internal.Documenter
for _, action := range GetAllTriggers() {
result = append(result, action)
}
return result
}