{- |
Module                  : Iris
Copyright               : (c) 2022 Dmitrii Kovanikov
SPDX-License-Identifier : MPL-2.0
Maintainer              : Dmitrii Kovanikov <kovanikov@gmail.com>
Stability               : Experimental
Portability             : Portable

__Iris__ is a Haskell CLI framework. It contains batteries for bulding
CLI applications in Haskell by following best-practices.

The library is designed for __qualified__ imports. To use it, import
like this:

@
__import qualified__ "Iris"
@

To create an CLI application with __Iris__, you need to do the
following steps:

1. Create settings for your applications by constructing a value of
   type 'CliEnvSettings'.
2. Define a monad for your application with the help of 'CliApp' by
   using either __type__ or __newtype__.

That's all! Now, you can write your CLI app by having access to all
capabilities provided by __Iris__ 🎉

For a detailed introduction to __Iris__, refer to the following examples:

* [Simple Grep Example](https://github.com/chshersh/iris/blob/main/examples/simple-grep/README.md)

@since 0.0.0.0
-}
module Iris (
    -- $app
    module Iris.App,
    -- $browse
    module Iris.Browse,
    -- $cli
    module Iris.Cli,
    -- $colour
    module Iris.Colour,
    -- $env
    module Iris.Env,
    -- $settings
    module Iris.Settings,
    -- $tool
    module Iris.Tool,
) where

import Iris.App
import Iris.Browse
import Iris.Cli
import Iris.Colour
import Iris.Env
import Iris.Settings
import Iris.Tool

{- $app
CLI Application monad.
-}

{- $browse
Functions to open local files in a browser.
-}

{- $cli
CLI parsing utilities.
-}

{- $colour
Functions to detect terminal support for colouring and print coloured output.
-}

{- $env
Global environment for a CLI application and CLI app settings.
-}

{- $settings
Settings for the environment.
-}

{- $tool
Capabilities to check required tools on the application start.
-}