packages feed

iris-0.0.0.0: app/Main.hs

module Main (main) where

import Control.Monad.IO.Class (MonadIO (..))
import Control.Monad.Reader (MonadReader)

import qualified Colourista
import qualified Iris
import qualified Paths_iris as Autogen


newtype App a = App
    { unApp :: Iris.CliApp () () a
    } deriving newtype
        ( Functor
        , Applicative
        , Monad
        , MonadIO
        , MonadReader (Iris.CliEnv () ())
        )

appSettings :: Iris.CliEnvSettings () ()
appSettings = Iris.defaultCliEnvSettings
    { Iris.cliEnvSettingsHeaderDesc = "Iris usage example"
    , Iris.cliEnvSettingsProgDesc = "A simple grep utility"
    , Iris.cliEnvSettingsVersionSettings =
        Just (Iris.defaultVersionSettings Autogen.version)
            { Iris.versionSettingsMkDesc = \v -> "Iris Example v" <> v
            }
    , Iris.cliEnvSettingsRequiredTools = ["curl", "ghc"]
    }

app :: App ()
app = do
    liftIO $ putStrLn "Hello from an Iris app!"

    Iris.putStdoutColouredLn
        (Colourista.formatWith [Colourista.yellow, Colourista.bold])
        "I'm yellow"

    Iris.putStderrColouredLn
        (Colourista.formatWith [Colourista.blueBg])
        "I'm white on blue"

main :: IO ()
main = Iris.runCliApp appSettings $ unApp app