Main.hs 2.42 KB
Newer Older
Alexandre Delanoë's avatar
Alexandre Delanoë committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{-|
Module      : Main.hs
Description : Gargantext Import Corpus
Copyright   : (c) CNRS, 2017-Present
License     : AGPL + CECILL v3
Maintainer  : team@gargantext.org
Stability   : experimental
Portability : POSIX

Import a corpus binary.

 -}

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
16
{-# LANGUAGE FlexibleContexts  #-}
17
{-# LANGUAGE RankNTypes        #-}
18
{-# LANGUAGE Strict            #-}
Alexandre Delanoë's avatar
Alexandre Delanoë committed
19 20 21

module Main where

22
import Prelude (read)
23
import Control.Exception (finally)
Alexandre Delanoë's avatar
Alexandre Delanoë committed
24 25
import Servant (ServantErr)
import Gargantext.Prelude
26
import Gargantext.Database.Flow (FlowCmdM, flowCorpusFile)
Alexandre Delanoë's avatar
Alexandre Delanoë committed
27
import Gargantext.Text.Parsers (FileFormat(CsvHalFormat))
28
import Gargantext.Database.Utils (Cmd, )
29 30 31 32
import Gargantext.Database.Types.Node (CorpusId, toHyperdataDocument)
import Gargantext.Database.Schema.User (insertUsersDemo)
import Gargantext.Text.Terms (TermType(..))
import Gargantext.Core (Lang(..))
33
import Gargantext.API.Node () -- instances
34
import Gargantext.API.Settings (withDevEnv, runCmdDev, DevEnv)
Alexandre Delanoë's avatar
Alexandre Delanoë committed
35
import System.Environment (getArgs)
36 37 38
--import Gargantext.Text.Parsers.GrandDebat (readFile, GrandDebatReference(..))
import qualified Data.Text as Text
import Control.Monad.IO.Class (liftIO)
Alexandre Delanoë's avatar
Alexandre Delanoë committed
39

Alexandre Delanoë's avatar
Alexandre Delanoë committed
40
main :: IO ()
Alexandre Delanoë's avatar
Alexandre Delanoë committed
41
main = do
42
  [userCreate, user, name, iniPath, limit, corpusPath] <- getArgs
Alexandre Delanoë's avatar
Alexandre Delanoë committed
43

44 45 46 47
  --{-
  let createUsers :: Cmd ServantErr Int64
      createUsers = insertUsersDemo
  
48 49 50 51 52
  let
    --tt = (Unsupervised EN 5 1 Nothing)
    tt = (Mono EN)
    cmd :: forall m. FlowCmdM DevEnv ServantErr m => m CorpusId
    cmd = flowCorpusFile (cs user) (cs name) (read limit :: Int) tt  CsvHalFormat corpusPath
53 54 55 56 57 58 59 60 61 62
  {-
  let debatCorpus :: forall m. FlowCmdM DevEnv ServantErr m => m CorpusId
      debatCorpus = do
        docs <- liftIO ( splitEvery 500
                       <$> take (read limit :: Int)
                       <$> readFile corpusPath
                       :: IO [[GrandDebatReference ]]
                       )
        flowCorpus (Text.pack user) (Text.pack name) (Multi FR) (map (map toHyperdataDocument) docs)
  --}
63

Alexandre Delanoë's avatar
Alexandre Delanoë committed
64

65 66 67 68
  withDevEnv iniPath $ \env -> do
    _ <- if userCreate == "true"
          then runCmdDev env createUsers
          else pure 0 --(cs "false")
Alexandre Delanoë's avatar
Alexandre Delanoë committed
69

70 71 72 73 74 75 76 77 78
    _ <- runCmdDev env cmd
    {-
    _ <- if corpusType == "csv"
            then runCmdDev env csvCorpus
            else if corpusType == "debat"
              then runCmdDev env debatCorpus
              else panic "corpusType unknown: try \"csv\" or \"debat\""
    -}
    pure ()