Cabal-1.22.5.0: A framework for packaging Haskell software

Copyright | Duncan Coutts 2009, 2013
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | None
Language | Haskell98

Distribution.Simple.Program.HcPkg

Contents

- Program invocations

Description

This module provides an library interface to the `hc-pkg` program. Currently only GHC, GHCJS and LHC have hc-pkg programs.

Synopsis

- data HcPkgInfo = HcPkgInfo {
  - hcPkgProgram :: ConfiguredProgram
  - noPkgDbStack :: Bool
  - noVerboseFlag :: Bool
  - flagPackageConf :: Bool
  - useSingleFileDb :: Bool
  }
- init :: HcPkgInfo -> Verbosity -> FilePath -> IO ()
- invoke :: HcPkgInfo -> Verbosity -> PackageDBStack -> [String] -> IO ()
- register :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> IO ()
- reregister :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> IO ()
- unregister :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()
- expose :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()
- hide :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()
- dump :: HcPkgInfo -> Verbosity -> PackageDB -> IO [InstalledPackageInfo]
- list :: HcPkgInfo -> Verbosity -> PackageDB -> IO [PackageId]
- initInvocation :: HcPkgInfo -> Verbosity -> FilePath -> ProgramInvocation
- registerInvocation :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> ProgramInvocation
- reregisterInvocation :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> ProgramInvocation
- unregisterInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation
- exposeInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation
- hideInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation
- dumpInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> ProgramInvocation
- listInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> ProgramInvocation

# Documentation

data HcPkgInfo

Information about the features and capabilities of an `hc-pkg` program.

Constructors

HcPkgInfo |

Fields

hcPkgProgram :: ConfiguredProgram
noPkgDbStack :: Bool

  no package DB stack supported

noVerboseFlag :: Bool

  hc-pkg does not support verbosity flags

flagPackageConf :: Bool

  use package-conf option instead of package-db

useSingleFileDb :: Bool

  requires single file package database

init :: HcPkgInfo -> Verbosity -> FilePath -> IO ()

Call `hc-pkg` to initialise a package database at the location {path}.

    hc-pkg init {path}

invoke :: HcPkgInfo -> Verbosity -> PackageDBStack -> [String] -> IO ()

Run `hc-pkg` using a given package DB stack, directly forwarding the provided command-line arguments to it.

register :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> IO ()

Call `hc-pkg` to register a package.

    hc-pkg register {filename | -} [--user | --global | --package-db]

reregister :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> IO ()

Call `hc-pkg` to re-register a package.

    hc-pkg register {filename | -} [--user | --global | --package-db]

unregister :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()

Call `hc-pkg` to unregister a package

    hc-pkg unregister [pkgid] [--user | --global | --package-db]

expose :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()

Call `hc-pkg` to expose a package.

    hc-pkg expose [pkgid] [--user | --global | --package-db]

hide :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> IO ()

Call `hc-pkg` to hide a package.

    hc-pkg hide [pkgid] [--user | --global | --package-db]

dump :: HcPkgInfo -> Verbosity -> PackageDB -> IO [InstalledPackageInfo]

Call `hc-pkg` to get all the details of all the packages in the given package database.

list :: HcPkgInfo -> Verbosity -> PackageDB -> IO [PackageId]

Call `hc-pkg` to get the source package Id of all the packages in the given package database.

This is much less information than with `dump`, but also rather quicker. Note in particular that it does not include the `InstalledPackageId`, just the source `PackageId` which is not necessarily unique in any package db.

# Program invocations

initInvocation :: HcPkgInfo -> Verbosity -> FilePath -> ProgramInvocation

registerInvocation :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> ProgramInvocation

reregisterInvocation :: HcPkgInfo -> Verbosity -> PackageDBStack -> Either FilePath InstalledPackageInfo -> ProgramInvocation

unregisterInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation

exposeInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation

hideInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> PackageId -> ProgramInvocation

dumpInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> ProgramInvocation

listInvocation :: HcPkgInfo -> Verbosity -> PackageDB -> ProgramInvocation