Severity level

This commit is contained in:
2026-08-21 13:55:22 +03:00
parent a77b85b576
commit c60508fd0c
4 changed files with 21 additions and 18 deletions
+13 -11
View File
@@ -25,7 +25,7 @@ import HomeAssistant.Runtime.Bus
import HomeAssistant.Runtime.Connection (readerAction, writerAction) import HomeAssistant.Runtime.Connection (readerAction, writerAction)
import HomeAssistant.Runtime.Supervisor (defaultBackoff, supervised) import HomeAssistant.Runtime.Supervisor (defaultBackoff, supervised)
import Network.Socket (withSocketsDo) import Network.Socket (withSocketsDo)
import System.Environment (getEnv) import System.Environment (getEnv, lookupEnv)
import HomeAssistant.Controller.Bedroom (bedroomPresenceController, bedroomButtonController, bedroomDrawerController) import HomeAssistant.Controller.Bedroom (bedroomPresenceController, bedroomButtonController, bedroomDrawerController)
import Data.UUID (UUID, toText) import Data.UUID (UUID, toText)
import qualified Data.UUID.V4 as UUID.V4 import qualified Data.UUID.V4 as UUID.V4
@@ -63,16 +63,18 @@ runController bus (Controller name machine _enabled) = do
go inbound f' go inbound f'
defaultMain :: IO () defaultMain :: IO ()
defaultMain = withSocketsDo $ withBus $ \bus -> do defaultMain = withSocketsDo $ do
token <- getEnv "HA_TOKEN" severity <- maybe DebugS (const InfoS) <$> lookupEnv "HA_DEBUG"
host <- getEnv "HA_HOST" withBus severity $ \bus -> do
let workers = token <- getEnv "HA_TOKEN"
[ ("reader", readerAction host 8123 token bus) host <- getEnv "HA_HOST"
, ("writer", writerAction bus) let workers =
] ++ [ (name, runController bus c) | c@(Controller name _ True) <- controllers ] [ ("reader", readerAction host 8123 token bus)
as <- mapM (\(name, act) -> async (supervised name defaultBackoff act)) workers , ("writer", writerAction bus)
(_, v) <- waitAny as ] ++ [ (name, runController bus c) | c@(Controller name _ True) <- controllers ]
absurd v as <- mapM (\(name, act) -> async (supervised name defaultBackoff act)) workers
(_, v) <- waitAny as
absurd v
dryRunHassEval :: Namespace -> Bus -> HASSEff a -> IO a dryRunHassEval :: Namespace -> Bus -> HASSEff a -> IO a
dryRunHassEval ns bus = \case dryRunHassEval ns bus = \case
+3 -3
View File
@@ -40,9 +40,9 @@ data Bus = Bus
, busLogEnv :: LogEnv , busLogEnv :: LogEnv
} }
withBus :: (Bus -> IO a) -> IO a withBus :: Severity -> (Bus -> IO a) -> IO a
withBus callback = do withBus severity callback = do
handleScribe <- mkHandleScribe ColorIfTerminal stdout (permitItem DebugS) V2 handleScribe <- mkHandleScribe ColorIfTerminal stdout (permitItem severity) V2
let makeLogEnv = registerScribe "stdout" handleScribe defaultScribeSettings =<< initLogEnv "hass-controller" "production" let makeLogEnv = registerScribe "stdout" handleScribe defaultScribeSettings =<< initLogEnv "hass-controller" "production"
-- closeScribes will stop accepting new logs, flush existing ones and clean up resources -- closeScribes will stop accepting new logs, flush existing ones and clean up resources
bracket makeLogEnv closeScribes $ \le -> do bracket makeLogEnv closeScribes $ \le -> do
+3 -3
View File
@@ -14,12 +14,12 @@ import Data.Time (UTCTime (..))
import Data.UUID (nil) import Data.UUID (nil)
import HomeAssistant.Controller (HASSEff (..), Service (..), Target(..)) import HomeAssistant.Controller (HASSEff (..), Service (..), Target(..))
import HomeAssistant.Runtime.Bus import HomeAssistant.Runtime.Bus
import Katip (Namespace (Namespace), runKatipContextT) import Katip (Namespace (Namespace), runKatipContextT, Severity (..))
import Test.Hspec import Test.Hspec
spec :: Spec spec :: Spec
spec = describe "Bus" $ do spec = describe "Bus" $ do
it "broadcasts inbound messages to every dup'd channel in order" $ withBus $ \bus -> do it "broadcasts inbound messages to every dup'd channel in order" $ withBus InfoS $ \bus -> do
p1 <- atomically $ dupTChan (busInbound bus) p1 <- atomically $ dupTChan (busInbound bus)
p2 <- atomically $ dupTChan (busInbound bus) p2 <- atomically $ dupTChan (busInbound bus)
atomically $ writeTChan (busInbound bus) (Number 1) atomically $ writeTChan (busInbound bus) (Number 1)
@@ -29,7 +29,7 @@ spec = describe "Bus" $ do
r1 `shouldBe` (Number 1, Number 2) r1 `shouldBe` (Number 1, Number 2)
r2 `shouldBe` (Number 1, Number 2) r2 `shouldBe` (Number 1, Number 2)
it "channelHassEval writes CallService to the outbound channel" $ withBus $ \bus -> do it "channelHassEval writes CallService to the outbound channel" $ withBus InfoS $ \bus -> do
let req = Request (UTCTime (toEnum 0) 0) nil let req = Request (UTCTime (toEnum 0) 0) nil
svc = Service "light" "turn_on" Nothing [EntityId "light.bedroom_masse"] svc = Service "light" "turn_on" Nothing [EntityId "light.bedroom_masse"]
runKatipContextT (busLogEnv bus) () (Namespace ["test"]) $ runKatipContextT (busLogEnv bus) () (Namespace ["test"]) $
+2 -1
View File
@@ -10,10 +10,11 @@ import HomeAssistant.Controller (light, lightController, Target (..))
import HomeAssistant.Runtime (Controller (..), runController) import HomeAssistant.Runtime (Controller (..), runController)
import HomeAssistant.Runtime.Bus import HomeAssistant.Runtime.Bus
import Test.Hspec import Test.Hspec
import Katip (Severity(..))
spec :: Spec spec :: Spec
spec = describe "runController" $ do spec = describe "runController" $ do
it "feeds inbound events through the machine and forwards service calls" $ withBus $ \bus -> do it "feeds inbound events through the machine and forwards service calls" $ withBus InfoS $ \bus -> do
_ <- async (runController bus (Controller "test" lightController True)) _ <- async (runController bus (Controller "test" lightController True))
putStrLn "Before the delay" putStrLn "Before the delay"
threadDelay 100000 -- let the controller dup its inbound channel threadDelay 100000 -- let the controller dup its inbound channel