]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Prelude/Config.hs
Merge branch 'dev' into dev-debian-install-script
[gargantext.git] / src / Gargantext / Prelude / Config.hs
1 {-|
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
8 Portability : POSIX
9
10 -}
11
12 {-# LANGUAGE TemplateHaskell #-}
13
14 module Gargantext.Prelude.Config where
15
16 import Prelude (read)
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)
24
25
26 data GargConfig = GargConfig { _gc_masteruser :: !Text
27 , _gc_secretkey :: !Text
28
29 , _gc_datafilepath :: !FilePath
30 , _gc_repofilepath :: !FilePath
31
32 , _gc_frame_write_url :: !Text
33 , _gc_frame_calc_url :: !Text
34
35 , _gc_frame_searx_url :: !Text
36 , _gc_frame_istex_url :: !Text
37
38 , _gc_max_docs_scrapers :: !Integer
39 }
40 deriving (Generic, Show)
41
42 makeLenses ''GargConfig
43
44 readConfig :: FilePath -> IO GargConfig
45 readConfig fp = do
46 ini <- readIniFile fp
47 let ini'' = case ini of
48 Left e -> panic (pack $ "gargantext.ini not found" <> show e)
49 Right ini' -> ini'
50
51 let val x = case (lookupValue (pack "gargantext") (pack x) ini'') of
52 Left _ -> panic (pack $ "ERROR: add " <> x <> " to your gargantext.ini")
53 Right p' -> p'
54
55 pure $ GargConfig (val "MASTER_USER")
56 (val "SECRET_KEY")
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")
64
65 defaultConfig :: GargConfig
66 defaultConfig = GargConfig "gargantua"
67 "secret"
68 "data"
69 "repos/"
70 "https://frame_write.url"
71 "https://frame_calc.url"
72 "https://frame_searx.url"
73 "https://frame_istex.url"
74 1000