[FEAT] SQL fun to insert postagging
[gargantext.git] / bin / gargantext-server / Main.hs
index 5c309089c69d62e1a4913dd3cfa8a7106aae12a5..ebe5ec6a88ff151973464b849a3a95a8cd4bd667 100644 (file)
@@ -11,23 +11,21 @@ Script to start gargantext with different modes (Dev, Prod, Mock).
 
 -}
 
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE DeriveGeneric     #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TypeOperators     #-}
-{-# LANGUAGE Strict             #-}
+{-# LANGUAGE StandaloneDeriving   #-}
+{-# LANGUAGE TypeOperators        #-}
+{-# LANGUAGE Strict               #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 
 module Main where
 
-
-import Options.Generic
+import Data.Version (showVersion)
 import Data.Text (unpack)
+import qualified Paths_gargantext as PG -- cabal magic build module
+import Options.Generic
+import System.Exit (exitSuccess)
 
 import Gargantext.Prelude
-import Gargantext.API (startGargantext) -- , startGargantextMock)
+import Gargantext.API (startGargantext, Mode(..)) -- , startGargantextMock)
 
 --------------------------------------------------------
 -- Graph Tests
@@ -37,13 +35,10 @@ import Gargantext.API (startGargantext) -- , startGargantextMock)
 --import qualified Gargantext.Graph.Distances.Matrice        as M
 --------------------------------------------------------
 
-data Mode = Dev | Mock | Prod 
-       deriving (Show, Read, Generic)
 instance ParseRecord Mode
 instance ParseField  Mode
 instance ParseFields Mode
 
-
 data MyOptions w =
   MyOptions { run  :: w ::: Mode
                         <?> "Possible modes: Dev | Mock | Prod"
@@ -51,6 +46,8 @@ data MyOptions w =
                         <?> "By default: 8008"
             , ini  :: w ::: Maybe Text
                         <?> "Ini-file path of gargantext.ini"
+            , version :: w ::: Bool
+                        <?> "Show version number and exit"
             }
    deriving (Generic)
 
@@ -60,22 +57,26 @@ deriving instance Show (MyOptions Unwrapped)
 
 main :: IO ()
 main = do
-  MyOptions myMode myPort myIniFile  <- unwrapRecord
+  MyOptions myMode myPort myIniFile myVersion  <- unwrapRecord
           "Gargantext server"
 
+  if myVersion then do
+    putStrLn $ "Version: " <> showVersion PG.version
+    System.Exit.exitSuccess
+  else
+    return ()
+
   let myPort' = case myPort of
         Just p  -> p
         Nothing -> 8008
 
   let start = case myMode of
-        Prod -> startGargantext myPort' (unpack myIniFile')
+        Mock -> panic "[ERROR] Mock mode unsupported"
+        _ -> startGargantext myMode myPort' (unpack myIniFile')
             where
               myIniFile' = case myIniFile of
                   Nothing -> panic "[ERROR] gargantext.ini needed"
                   Just i  -> i
-        Dev -> panic "[ERROR] Dev mode unsupported"
-        Mock -> panic "[ERROR] Mock mode unsupported"
-        -- _ -> startGargantextMock myPort'
 
   putStrLn $ "Starting with " <> show myMode <> " mode."
   start