hie-bios-0.14.0: Set up a GHC API session
Safe HaskellNone
LanguageHaskell2010

HIE.Bios.Types

Synopsis

Documentation

hie_bios_output :: String #

Environment variable containing the filepath to which cradle actions write their results to. If the filepath does not exist, cradle actions must create them.

hie_bios_ghc :: String #

Environment variable pointing to the GHC location used by cabal's and stack's GHC wrapper.

If not set, will default to sensible defaults.

hie_bios_ghc_args :: String #

Environment variable with extra arguments passed to the GHC location in cabal's and stack's GHC wrapper.

If not set, assume no extra arguments.

hie_bios_arg :: String #

Environment variable pointing to the source file location that caused the cradle action to be executed.

hie_bios_deps :: String #

Environment variable pointing to a filepath to which dependencies of a cradle can be written to by the cradle action.

data Cradle a #

The environment of a single Cradle. A Cradle is a unit for the respective build-system.

It contains the root directory of the Cradle, the name of the Cradle (for debugging purposes), and knows how to set up a GHC session that is able to compile files that are part of this Cradle.

A Cradle may be a single unit in the "cabal-install" context, or the whole package, comparable to how "stack" works.

Constructors

Cradle 

Fields

Instances

Instances details
Functor Cradle # 
Instance details

Defined in HIE.Bios.Types

Methods

fmap :: (a -> b) -> Cradle a -> Cradle b #

(<$) :: a -> Cradle b -> Cradle a #

Show a => Show (Cradle a) # 
Instance details

Defined in HIE.Bios.Types

Methods

showsPrec :: Int -> Cradle a -> ShowS #

show :: Cradle a -> String #

showList :: [Cradle a] -> ShowS #

data ActionName a #

Constructors

Stack 
Cabal 
Bios 
Default 
Multi 
Direct 
None 
Other a 

Instances

Instances details
Functor ActionName # 
Instance details

Defined in HIE.Bios.Types

Methods

fmap :: (a -> b) -> ActionName a -> ActionName b #

(<$) :: a -> ActionName b -> ActionName a #

Show a => Show (ActionName a) # 
Instance details

Defined in HIE.Bios.Types

Eq a => Eq (ActionName a) # 
Instance details

Defined in HIE.Bios.Types

Methods

(==) :: ActionName a -> ActionName a -> Bool #

(/=) :: ActionName a -> ActionName a -> Bool #

Ord a => Ord (ActionName a) # 
Instance details

Defined in HIE.Bios.Types

data LoadStyle #

The LoadStyle instructs a cradle on how to load a given file target.

Constructors

LoadFile

Instruct the cradle to load the given file target.

What this entails depends on the cradle. For example, the cabal cradle will configure the whole component the file target belongs to, and produce component options to load the component, which is the minimal unit of code in cabal repl. A 'default' cradle, on the other hand, will only load the given filepath.

LoadWithContext [FilePath]

Give a cradle additional context for loading a file target.

The context instructs the cradle to load the file target, while also loading the given filepaths. This is useful for cradles that support loading multiple code units at once, e.g. cabal cradles can use the 'multi-repl' feature to set up a multiple home unit session in GHC.

Instances

Instances details
Show LoadStyle # 
Instance details

Defined in HIE.Bios.Types

Eq LoadStyle # 
Instance details

Defined in HIE.Bios.Types

Ord LoadStyle # 
Instance details

Defined in HIE.Bios.Types

data CradleAction a #

Constructors

CradleAction 

Fields

Instances

Instances details
Functor CradleAction # 
Instance details

Defined in HIE.Bios.Types

Methods

fmap :: (a -> b) -> CradleAction a -> CradleAction b #

(<$) :: a -> CradleAction b -> CradleAction a #

Show a => Show (CradleAction a) # 
Instance details

Defined in HIE.Bios.Types

data CradleLoadResult r #

Result of an attempt to set up a GHC session for a Cradle. This is the go-to error handling mechanism. When possible, this should be preferred over throwing exceptions.

Constructors

CradleSuccess r

The cradle succeeded and returned these options.

CradleFail CradleError

We tried to load the cradle and it failed.

CradleNone

No attempt was made to load the cradle.

Instances

Instances details
Applicative CradleLoadResult # 
Instance details

Defined in HIE.Bios.Types

Functor CradleLoadResult # 
Instance details

Defined in HIE.Bios.Types

Methods

fmap :: (a -> b) -> CradleLoadResult a -> CradleLoadResult b #

(<$) :: a -> CradleLoadResult b -> CradleLoadResult a #

Monad CradleLoadResult # 
Instance details

Defined in HIE.Bios.Types

Foldable CradleLoadResult # 
Instance details

Defined in HIE.Bios.Types

Methods

fold :: Monoid m => CradleLoadResult m -> m #

foldMap :: Monoid m => (a -> m) -> CradleLoadResult a -> m #

foldMap' :: Monoid m => (a -> m) -> CradleLoadResult a -> m #

foldr :: (a -> b -> b) -> b -> CradleLoadResult a -> b #

foldr' :: (a -> b -> b) -> b -> CradleLoadResult a -> b #

foldl :: (b -> a -> b) -> b -> CradleLoadResult a -> b #

foldl' :: (b -> a -> b) -> b -> CradleLoadResult a -> b #

foldr1 :: (a -> a -> a) -> CradleLoadResult a -> a #

foldl1 :: (a -> a -> a) -> CradleLoadResult a -> a #

toList :: CradleLoadResult a -> [a] #

null :: CradleLoadResult a -> Bool #

length :: CradleLoadResult a -> Int #

elem :: Eq a => a -> CradleLoadResult a -> Bool #

maximum :: Ord a => CradleLoadResult a -> a #

minimum :: Ord a => CradleLoadResult a -> a #

sum :: Num a => CradleLoadResult a -> a #

product :: Num a => CradleLoadResult a -> a #

Traversable CradleLoadResult # 
Instance details

Defined in HIE.Bios.Types

Methods

traverse :: Applicative f => (a -> f b) -> CradleLoadResult a -> f (CradleLoadResult b) #

sequenceA :: Applicative f => CradleLoadResult (f a) -> f (CradleLoadResult a) #

mapM :: Monad m => (a -> m b) -> CradleLoadResult a -> m (CradleLoadResult b) #

sequence :: Monad m => CradleLoadResult (m a) -> m (CradleLoadResult a) #

Show r => Show (CradleLoadResult r) # 
Instance details

Defined in HIE.Bios.Types

Eq r => Eq (CradleLoadResult r) # 
Instance details

Defined in HIE.Bios.Types

cradleLoadResult :: c -> (CradleError -> c) -> (r -> c) -> CradleLoadResult r -> c #

newtype CradleLoadResultT (m :: Type -> Type) a #

Instances

Instances details
MonadTrans CradleLoadResultT # 
Instance details

Defined in HIE.Bios.Types

Methods

lift :: Monad m => m a -> CradleLoadResultT m a #

MonadIO m => MonadIO (CradleLoadResultT m) # 
Instance details

Defined in HIE.Bios.Types

Methods

liftIO :: IO a -> CradleLoadResultT m a #

(Monad m, Applicative m) => Applicative (CradleLoadResultT m) # 
Instance details

Defined in HIE.Bios.Types

Functor f => Functor (CradleLoadResultT f) # 
Instance details

Defined in HIE.Bios.Types

Methods

fmap :: (a -> b) -> CradleLoadResultT f a -> CradleLoadResultT f b #

(<$) :: a -> CradleLoadResultT f b -> CradleLoadResultT f a #

Monad m => Monad (CradleLoadResultT m) # 
Instance details

Defined in HIE.Bios.Types

MonadFail m => MonadFail (CradleLoadResultT m) # 
Instance details

Defined in HIE.Bios.Types

Methods

fail :: String -> CradleLoadResultT m a #

throwCE :: forall (m :: Type -> Type) a. Monad m => CradleError -> CradleLoadResultT m a #

data CradleError #

Constructors

CradleError 

Fields

data ComponentOptions #

Option information for GHC

Constructors

ComponentOptions 

Fields

  • componentOptions :: [String]

    Command line options.

  • componentRoot :: FilePath

    Root directory of the component. All componentOptions are either absolute, or relative to this directory.

  • componentDependencies :: [FilePath]

    Dependencies of a cradle that might change the cradle. Contains both files specified in hie.yaml as well as specified by the build-tool if there is any. FilePaths are expected to be relative to the cradleRootDir to which this CradleAction belongs to. Files returned by this action might not actually exist. This is useful, because, sometimes, adding specific files changes the options that a Cradle may return, thus, needs reload as soon as these files are created.

prettyCmdSpec :: CmdSpec -> String #

Prettify CmdSpec, so we can show the command to a user

prettyProcessEnv :: CreateProcess -> [String] #

Pretty print hie-bios's relevant environment variables.