2 Module : Gargantext.Prelude.Config
3 Description : Textmining Collaborative Platform
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE TemplateHaskell #-}
14 module Gargantext.Prelude.Config where
17 import System.IO (FilePath)
18 import Data.Ini (readIniFile, lookupValue)
19 import Data.Either.Extra (Either(Left, Right))
20 import Gargantext.Prelude
21 import Data.Text (Text, pack)
22 import GHC.Generics (Generic)
23 import Control.Lens (makeLenses)
26 data GargConfig = GargConfig { _gc_masteruser :: !Text
27 , _gc_secretkey :: !Text
29 , _gc_datafilepath :: !FilePath
30 , _gc_repofilepath :: !FilePath
32 , _gc_frame_write_url :: !Text
33 , _gc_frame_calc_url :: !Text
35 , _gc_frame_searx_url :: !Text
36 , _gc_frame_istex_url :: !Text
38 , _gc_max_docs_scrapers :: !Integer
40 deriving (Generic, Show)
42 makeLenses ''GargConfig
44 readConfig :: FilePath -> IO GargConfig
47 let ini'' = case ini of
48 Left e -> panic (pack $ "gargantext.ini not found" <> show e)
51 let val x = case (lookupValue (pack "gargantext") (pack x) ini'') of
52 Left _ -> panic (pack $ "ERROR: add " <> x <> " to your gargantext.ini")
55 pure $ GargConfig (val "MASTER_USER")
57 (cs $ val "DATA_FILEPATH")
58 (cs $ val "REPO_FILEPATH")
59 (val "FRAME_WRITE_URL")
60 (val "FRAME_CALC_URL")
61 (val "FRAME_SEARX_URL")
62 (val "FRAME_ISTEX_URL")
63 (read $ cs $ val "MAX_DOCS_SCRAPERS")
65 defaultConfig :: GargConfig
66 defaultConfig = GargConfig "gargantua"
70 "https://frame_write.url"
71 "https://frame_calc.url"
72 "https://frame_searx.url"
73 "https://frame_istex.url"