packages feed

imm-1.0.1.0: src/bin/Executable.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
--module Executable where

-- {{{ Imports
import           Imm
import           Imm.Database.JsonFile
import           Imm.HTTP.Simple
import           Imm.Logger.Simple
import           Imm.Prelude

import           System.Exit
-- }}}

mkDummyCoHooks :: (MonadIO m, MonadThrow m) => () -> CoHooksF m ()
mkDummyCoHooks _ = CoHooksF coOnNewElement where
  coOnNewElement _ _ = do
    io $ putStrLn "No hook defined."
    throwM $ ExitFailure 1


main :: IO ()
main = do
  logger <- defaultLogger
  manager <- defaultManager
  database <- defaultDatabase

  imm (mkCoHttpClient, manager) (mkCoDatabase, database) (mkCoLogger, logger) (mkDummyCoHooks, ())