Cabal
Safe HaskellNone
LanguageHaskell2010

Distribution.Simple.SetupHooks.HooksMain

Description

Implementation of hooks executables for build-type: Hooks packages.

A hooks executable is a small program compiled from the SetupHooks.hs module of a package with build-type: Hooks. Its main function is:

import Distribution.Simple.SetupHooks.HooksMain (hooksMain)
import SetupHooks (setupHooks)
main = hooksMain setupHooks

cabal-install communicates with the external hooks executable to implement the hooks in a package with build-type: Hooks.

Synopsis

Main entry point for hooks executables

hooksMain :: SetupHooks -> IO () Source #

Create a hooks executable main given the package's SetupHooks.

The executable expects three command-line arguments:

  1. A reference to an input communication handle (to read hook inputs from).
  2. A reference to an output communication handle (to write hook outputs to).
  3. The hook type to run.

The hook reads binary-encoded data from the input handle, runs the requested hook, and writes the binary-encoded result to the output handle.

Hooks version handshake

data HooksVersion Source #

The version of the Hooks API in use.

Used for handshake before beginning inter-process communication.

Instances

Instances details
Binary HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Generic HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Associated Types

type Rep HooksVersion 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

type Rep HooksVersion = D1 ('MetaData "HooksVersion" "Distribution.Simple.SetupHooks.HooksMain" "Cabal-3.18.1.0-inplace" 'False) (C1 ('MetaCons "HooksVersion" 'PrefixI 'True) (S1 ('MetaSel ('Just "hooksAPIVersion") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Version) :*: (S1 ('MetaSel ('Just "cabalABIHash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MD5) :*: S1 ('MetaSel ('Just "hooksABIHash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MD5))))
Show HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Eq HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Ord HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

type Rep HooksVersion Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

type Rep HooksVersion = D1 ('MetaData "HooksVersion" "Distribution.Simple.SetupHooks.HooksMain" "Cabal-3.18.1.0-inplace" 'False) (C1 ('MetaCons "HooksVersion" 'PrefixI 'True) (S1 ('MetaSel ('Just "hooksAPIVersion") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Version) :*: (S1 ('MetaSel ('Just "cabalABIHash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MD5) :*: S1 ('MetaSel ('Just "hooksABIHash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MD5))))

hooksVersion :: HooksVersion Source #

The version of the Hooks API built into this version of the Cabal library.

Used for handshake before beginning inter-process communication.

data CabalABI Source #

Tracks the parts of the Cabal API relevant to its binary interface.

Instances

Instances details
Structured CabalABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Generic CabalABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Associated Types

type Rep CabalABI 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

type Rep CabalABI = D1 ('MetaData "CabalABI" "Distribution.Simple.SetupHooks.HooksMain" "Cabal-3.18.1.0-inplace" 'False) (C1 ('MetaCons "CabalABI" 'PrefixI 'True) (S1 ('MetaSel ('Just "cabalLocalBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LocalBuildInfo)))

Methods

from :: CabalABI -> Rep CabalABI x #

to :: Rep CabalABI x -> CabalABI #

type Rep CabalABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

type Rep CabalABI = D1 ('MetaData "CabalABI" "Distribution.Simple.SetupHooks.HooksMain" "Cabal-3.18.1.0-inplace" 'False) (C1 ('MetaCons "CabalABI" 'PrefixI 'True) (S1 ('MetaSel ('Just "cabalLocalBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LocalBuildInfo)))

data HooksABI Source #

Tracks the parts of the Hooks API relevant to its binary interface.

Instances

Instances details
Structured HooksABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Generic HooksABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain

Methods

from :: HooksABI -> Rep HooksABI x #

to :: Rep HooksABI x -> HooksABI #

type Rep HooksABI Source # 
Instance details

Defined in Distribution.Simple.SetupHooks.HooksMain