{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE NoImplicitPrelude #-} module CLI.Config ( Service (..), Config (..), readConfig, ServiceOptions (..), ) where import qualified Data.ByteString as L ( readFile, ) import Data.Yaml (FromJSON, decodeThrow) import Relude import System.FilePath.Posix ( (), ) data ServiceOptions = ServiceOptions { namespace :: Maybe Bool, globals :: Maybe [Text] } deriving ( Generic, FromJSON, Show ) data Service = Service { name :: String, includes :: [FilePath], source :: FilePath, options :: Maybe ServiceOptions, schema :: Maybe FilePath } deriving ( Generic, FromJSON, Show ) data Config = Config { server :: Maybe [Service], client :: Maybe [Service] } deriving ( Generic, FromJSON, Show ) readConfig :: FilePath -> IO Config readConfig path = do file <- L.readFile (path "code-gen.yaml") decodeThrow file