55module Main where
66
77import Control.Monad (forM_ , unless )
8- import Data.Function ((&) )
98import Data.List qualified as List
109import Data.Set qualified as Set
1110import Data.Text (Text )
@@ -22,39 +21,41 @@ import Effectful.Fail (runFailIO)
2221import Effectful.FileSystem
2322import Effectful.Log (Log , runLog )
2423import Effectful.PostgreSQL.Transact.Effect (DB , dbtToEff , runDB )
24+ import GHC.Debug.Stub
2525import Log qualified
2626import System.Exit
27- import System .IO
27+ import UnliftIO .IO
2828
2929import Flora.Environment (getFloraEnv )
30- import Flora.Environment.Env ( FloraEnv ( .. ), MLTP ( .. ))
30+ import Flora.Environment.Env
3131import Flora.Logging qualified as Logging
3232import Flora.Model.PackageIndex.Types
3333import FloraJobs.Scheduler (checkIfIndexRefreshJobIsPlanned )
3434import FloraWeb.Server
3535
3636main :: IO ()
37- main = do
37+ main = runEff $ runFailIO $ runFileSystem $ do
38+ env <- getFloraEnv
3839 hSetBuffering stdout LineBuffering
39- preFlightChecks
40- runFlora
40+ preFlightChecks env
41+ case env. environment of
42+ Production -> liftIO runFlora
43+ _ -> liftIO $ withGhcDebug runFlora
4144
42- preFlightChecks :: IO ()
43- preFlightChecks = do
44- env <- getFloraEnv & runFileSystem & runFailIO & runEff
45- runEff $ do
46- let withLogger = Logging. makeLogger env. mltp. logger
47- withLogger $ \ appLogger ->
48- runDB env. pool
49- . withUnliftStrategy (ConcUnlift Ephemeral Unlimited )
50- $ runLog
51- " flora-server"
52- appLogger
53- Log. LogTrace
54- $ do
55- checkExpectedTables
56- checkRepositoriesAreConfigured
57- checkIfIndexRefreshJobIsPlanned env. pool
45+ preFlightChecks :: IOE :> es => FloraEnv -> Eff es ()
46+ preFlightChecks env = do
47+ let withLogger = Logging. makeLogger env. mltp. logger
48+ withLogger $ \ appLogger ->
49+ runDB env. pool
50+ . withUnliftStrategy (ConcUnlift Ephemeral Unlimited )
51+ $ runLog
52+ " flora-server"
53+ appLogger
54+ Log. LogTrace
55+ $ do
56+ checkExpectedTables
57+ checkRepositoriesAreConfigured
58+ checkIfIndexRefreshJobIsPlanned env. pool
5859
5960checkExpectedTables :: (DB :> es , IOE :> es , Log :> es ) => Eff es ()
6061checkExpectedTables = do
0 commit comments