From 9d3982e6909956c99244fc86756f2476c9a3fe4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 15 Jun 2025 21:00:17 +0200 Subject: Timeout setting in config file Changelog: Added optional `timeout` setting to config file --- src/Config.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/Config.hs') diff --git a/src/Config.hs b/src/Config.hs index e1dcebf..adf0321 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -8,6 +8,7 @@ module Config ( import Control.Monad.Combinators import Data.ByteString.Lazy qualified as BS +import Data.Scientific import Data.Text qualified as T import Data.YAML @@ -19,7 +20,8 @@ import System.FilePath.Glob data Config = Config { configDir :: FilePath , configTool :: Maybe FilePath - , configTests :: [Pattern] + , configTests :: [ Pattern ] + , configTimeout :: Maybe Scientific } deriving (Show) @@ -31,8 +33,17 @@ instance FromYAML (FilePath -> Config) where , m .:? "tests" .!= [] -- list of patterns ] ) + configTimeout <- fmap fromNumber <$> m .:! "timeout" return $ \configDir -> Config {..} +newtype Number = Number { fromNumber :: Scientific } + +instance FromYAML Number where + parseYAML = \case + Scalar _ (SFloat x) -> return $ Number $ realToFrac x + Scalar _ (SInt x) -> return $ Number $ fromIntegral x + node -> typeMismatch "int or float" node + findConfig :: IO (Maybe FilePath) findConfig = go "." where -- cgit v1.2.3