From 8a59770936ca4c3d6cdb1010f12bfa99d2fe2442 Mon Sep 17 00:00:00 2001 From: Sam Lewis Date: Mon, 31 Oct 2022 01:17:20 -0400 Subject: [PATCH] enforce ToState when using Duration --- app.go | 8 ++++++-- entitylistener.go | 2 +- internal/http/http.go | 4 ++-- internal/websocket/websocket.go | 8 ++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app.go b/app.go index eb14bce..626b615 100644 --- a/app.go +++ b/app.go @@ -75,7 +75,7 @@ func (a *app) RegisterSchedule(s Schedule) { } if s.frequency == 0 { - log.Fatalln("A schedule must call either Daily() or Every() when built.") + panic("A schedule must use either Daily() or Every() when built.") } now := time.Now() @@ -95,6 +95,10 @@ func (a *app) RegisterSchedule(s Schedule) { } func (a *app) RegisterEntityListener(etl EntityListener) { + if etl.delay != 0 && etl.toState == "" { + panic("EntityListener error: you have to use ToState() when using Duration()") + } + for _, entity := range etl.entityIds { if elList, ok := a.entityListeners[entity]; ok { a.entityListeners[entity] = append(elList, &etl) @@ -135,7 +139,7 @@ func getSunriseSunset(a *app, sunrise bool, offset []DurationString) carbon.Carb // get next sunrise/sunset time from HA state, err := a.state.Get("sun.sun") if err != nil { - log.Fatalln("Couldn't get sun.sun state from HA to calculate", printString) + panic("Couldn't get sun.sun state from HA to calculate", printString) } nextSetOrRise := carbon.Parse(state.Attributes[attrKey].(string)) diff --git a/entitylistener.go b/entitylistener.go index 93eea1d..ff1f1ae 100644 --- a/entitylistener.go +++ b/entitylistener.go @@ -67,7 +67,7 @@ type elBuilder1 struct { func (b elBuilder1) EntityIds(entityIds ...string) elBuilder2 { if len(entityIds) == 0 { - log.Fatalln("must pass at least one entityId to EntityIds()") + panic("must pass at least one entityId to EntityIds()") } else { b.entityListener.entityIds = entityIds } diff --git a/internal/http/http.go b/internal/http/http.go index f46097a..214e190 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -71,12 +71,12 @@ func get(url, token string) ([]byte, error) { // defer resp.Body.Close() // if resp.StatusCode == 401 { -// log.Fatalln("ERROR: Auth token is invalid. Please double check it or create a new token in your Home Assistant profile") +// panic("ERROR: Auth token is invalid. Please double check it or create a new token in your Home Assistant profile") // } // body, err := io.ReadAll(resp.Body) // if err != nil { -// log.Fatalln(err) +// panic(err) // } // return body, nil diff --git a/internal/websocket/websocket.go b/internal/websocket/websocket.go index 9312602..ff4b1b1 100644 --- a/internal/websocket/websocket.go +++ b/internal/websocket/websocket.go @@ -59,21 +59,21 @@ func SetupConnection(connString string, authToken string) (*websocket.Conn, cont _, err = ReadMessage(conn, ctx) if err != nil { ctxCancel() - log.Fatalln("Unknown error creating websocket client") + panic("Unknown error creating websocket client") } // Send auth message err = SendAuthMessage(conn, ctx, authToken) if err != nil { ctxCancel() - log.Fatalln("Unknown error creating websocket client") + panic("Unknown error creating websocket client") } // Verify auth message was successful err = VerifyAuthResponse(conn, ctx) if err != nil { ctxCancel() - log.Fatalln("ERROR: Auth token is invalid. Please double check it or create a new token in your Home Assistant profile") + panic("ERROR: Auth token is invalid. Please double check it or create a new token in your Home Assistant profile") } return conn, ctx, ctxCancel @@ -132,7 +132,7 @@ func SubscribeToEventType(eventType string, conn *websocket.Conn, ctx context.Co } err := WriteMessage(e, conn, ctx) if err != nil { - log.Fatalln("Error writing to websocket: ", err) + panic("Error writing to websocket: ", err) } // m, _ := ReadMessage(conn, ctx) // log.Default().Println(string(m))