062a76c8ba
> Mostly because its less awkward to operate.
62 lines
1.4 KiB
Haskell
62 lines
1.4 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
module Config
|
|
( parserOpts
|
|
, AppConfig(..)
|
|
, importerParserOpts
|
|
, ImporterConfig(..)
|
|
) where
|
|
|
|
import Options.Applicative
|
|
|
|
data AppConfig = AppConfig
|
|
{ appPort :: Int
|
|
, appDbFile :: FilePath
|
|
} deriving (Show, Eq)
|
|
|
|
appConfig :: Parser AppConfig
|
|
appConfig = AppConfig
|
|
<$> option auto
|
|
( long "port"
|
|
<> help "port to listen"
|
|
<> showDefault
|
|
<> value 8000
|
|
<> metavar "INT")
|
|
<*> strOption
|
|
( long "dbpath"
|
|
<> help "sqlite db file path"
|
|
<> showDefault
|
|
<> value "quotes.db"
|
|
<> metavar "TARGET")
|
|
|
|
parserOpts :: ParserInfo AppConfig
|
|
parserOpts = info (appConfig <**> helper)
|
|
( fullDesc
|
|
<> progDesc "Serve Quotes API"
|
|
<> header "quotes api" )
|
|
|
|
data ImporterConfig = ImporterConfig
|
|
{ ioAppDbFile :: FilePath
|
|
, ioReadwiseFile :: FilePath
|
|
} deriving (Show, Eq)
|
|
|
|
importerConfig :: Parser ImporterConfig
|
|
importerConfig = ImporterConfig
|
|
<$> strOption
|
|
( long "dbpath"
|
|
<> help "sqlite db file path"
|
|
<> showDefault
|
|
<> value "quotes.db"
|
|
<> metavar "TARGET")
|
|
<*> strOption
|
|
( long "readwise"
|
|
<> help "readwise export file path"
|
|
<> showDefault
|
|
<> value "readwise.csv"
|
|
<> metavar "RWCSV")
|
|
|
|
importerParserOpts :: ParserInfo ImporterConfig
|
|
importerParserOpts = info (importerConfig <**> helper)
|
|
( fullDesc
|
|
<> progDesc "Import data into db"
|
|
<> header "importer API")
|