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_url :: !Text
28 , _gc_masteruser :: !Text
29 , _gc_secretkey :: !Text
31 , _gc_datafilepath :: !FilePath
32 , _gc_repofilepath :: !FilePath
34 , _gc_frame_write_url :: !Text
35 , _gc_frame_calc_url :: !Text
37 , _gc_frame_searx_url :: !Text
38 , _gc_frame_istex_url :: !Text
40 , _gc_max_docs_scrapers :: !Integer
42 deriving (Generic, Show)
44 makeLenses ''GargConfig
46 readConfig :: FilePath -> IO GargConfig
49 let ini'' = case ini of
50 Left e -> panic (pack $ "gargantext.ini not found" <> show e)
53 let val x = case (lookupValue (pack "gargantext") (pack x) ini'') of
54 Left _ -> panic (pack $ "ERROR: add " <> x <> " to your gargantext.ini")
57 pure $ GargConfig (val "URL")
60 (cs $ val "DATA_FILEPATH")
61 (cs $ val "REPO_FILEPATH")
62 (val "FRAME_WRITE_URL")
63 (val "FRAME_CALC_URL")
64 (val "FRAME_SEARX_URL")
65 (val "FRAME_ISTEX_URL")
66 (read $ cs $ val "MAX_DOCS_SCRAPERS")
68 defaultConfig :: GargConfig
69 defaultConfig = GargConfig "https://gargantext.org"
74 "https://frame_write.url"
75 "https://frame_calc.url"
76 "https://frame_searx.url"
77 "https://frame_istex.url"