{-|
Module      : Hsftp.Reader
Description : Monad for keeping shared state.
Copyright   : (c) IOcrafts, 2024-present
License     : BSD
Maintainer  : Maurizio Dusi
Stability   : stable
Portability : POSIX

This module provides the Reader monad for keeping shared state.

-}


module Hsftp.Reader
    ( Env (..)
    , ReaderIO
    ) where

import           Control.Monad.Reader

data Env
  = Env { Env -> String
hostName           :: String
        , Env -> Int
port               :: Int
        , Env -> String
knownHosts         :: String
        , Env -> String
user               :: String
        , Env -> String
password           :: String
        , Env -> String
transferFrom       :: String
        , Env -> String
transferTo         :: String
        , Env -> [String]
transferExtensions :: [String]
        , Env -> Maybe String
archiveTo          :: Maybe String
        , Env -> Integer
date               :: Integer
        , Env -> Bool
noOp               :: Bool
        }
  deriving (Int -> Env -> ShowS
[Env] -> ShowS
Env -> String
(Int -> Env -> ShowS)
-> (Env -> String) -> ([Env] -> ShowS) -> Show Env
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Env -> ShowS
showsPrec :: Int -> Env -> ShowS
$cshow :: Env -> String
show :: Env -> String
$cshowList :: [Env] -> ShowS
showList :: [Env] -> ShowS
Show)


type ReaderIO a = ReaderT Env IO a