diff --git a/src/Main.hs b/src/Main.hs index c3bf289..7ed14c9 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE GeneralizedNewtypeDeriving #-} module Main where import Control.Concurrent hiding (newChan, readChan, @@ -7,6 +8,7 @@ import Control.Exception.Safe import Control.Monad import Data.Aeson import qualified Data.HashMap.Strict as HM +import Data.Monoid import qualified Data.Text as T import qualified Data.Text.IO as TIO import Data.Time.Clock @@ -17,7 +19,8 @@ import System.IO import System.Process newtype ArgsMap = ArgsMap { unArgsMap :: HM.HashMap T.Text T.Text } - deriving (Show, Eq) + deriving (Show, Eq, Semigroup) + data Config = Config { @@ -102,7 +105,7 @@ runWithConfig config = do globalLogger outChan where - makeArgs globalArgs localArgs = fmap makeArg (HM.toList . unArgsMap $ globalArgs) ++ fmap makeArg (HM.toList . unArgsMap $ localArgs) + makeArgs globalArgs localArgs = fmap makeArg (HM.toList . unArgsMap $ localArgs <> globalArgs) makeArg (k, v) = T.unpack $ if v /= "" then "--" <> k <> "=" <> v else "--" <> k globalLogger chan = withFile (cGlobalLog config) AppendMode $ \log -> forever $ do line <- readChan chan