{-# LANGUAGE DeriveDataTypeable #-}
module Distribution.Client.ProjectBuilding.Types (
BuildStatusMap,
BuildStatus(..),
buildStatusRequiresBuild,
buildStatusToString,
BuildStatusRebuild(..),
BuildReason(..),
MonitorChangedReason(..),
BuildOutcomes,
BuildOutcome,
BuildResult(..),
BuildFailure(..),
BuildFailureReason(..),
) where
import Distribution.Client.Compat.Prelude
import Prelude ()
import Distribution.Client.Types (DocsResult, TestsResult)
import Distribution.Client.FileMonitor (MonitorChangedReason(..))
import Distribution.Package (UnitId, PackageId)
import Distribution.InstalledPackageInfo (InstalledPackageInfo)
import Distribution.Simple.LocalBuildInfo (ComponentName)
type BuildStatusMap = Map UnitId BuildStatus
data BuildStatus =
BuildStatusPreExisting
| BuildStatusInstalled
| BuildStatusDownload
| BuildStatusUnpack FilePath
| BuildStatusRebuild FilePath BuildStatusRebuild
| BuildStatusUpToDate BuildResult
buildStatusRequiresBuild :: BuildStatus -> Bool
buildStatusRequiresBuild :: BuildStatus -> Bool
buildStatusRequiresBuild BuildStatus
BuildStatusPreExisting = Bool
False
buildStatusRequiresBuild BuildStatus
BuildStatusInstalled = Bool
False
buildStatusRequiresBuild BuildStatusUpToDate {} = Bool
False
buildStatusRequiresBuild BuildStatus
_ = Bool
True
buildStatusToString :: BuildStatus -> String
buildStatusToString :: BuildStatus -> FilePath
buildStatusToString BuildStatus
BuildStatusPreExisting = FilePath
"BuildStatusPreExisting"
buildStatusToString BuildStatus
BuildStatusInstalled = FilePath
"BuildStatusInstalled"
buildStatusToString BuildStatus
BuildStatusDownload = FilePath
"BuildStatusDownload"
buildStatusToString (BuildStatusUnpack FilePath
fp) = FilePath
"BuildStatusUnpack " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> FilePath
show FilePath
fp
buildStatusToString (BuildStatusRebuild FilePath
fp BuildStatusRebuild
_) = FilePath
"BuildStatusRebuild " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> FilePath
show FilePath
fp
buildStatusToString (BuildStatusUpToDate BuildResult
_) = FilePath
"BuildStatusUpToDate"
data BuildStatusRebuild =
BuildStatusConfigure (MonitorChangedReason ())
| BuildStatusBuild (Maybe (Maybe InstalledPackageInfo)) BuildReason
data BuildReason =
BuildReasonDepsRebuilt
| BuildReasonFilesChanged (MonitorChangedReason ())
| (Set ComponentName)
| BuildReasonEphemeralTargets
type BuildOutcomes = Map UnitId BuildOutcome
type BuildOutcome = Either BuildFailure BuildResult
data BuildResult = BuildResult {
BuildResult -> DocsResult
buildResultDocs :: DocsResult,
BuildResult -> TestsResult
buildResultTests :: TestsResult,
BuildResult -> Maybe FilePath
buildResultLogFile :: Maybe FilePath
}
deriving Int -> BuildResult -> ShowS
[BuildResult] -> ShowS
BuildResult -> FilePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [BuildResult] -> ShowS
$cshowList :: [BuildResult] -> ShowS
show :: BuildResult -> FilePath
$cshow :: BuildResult -> FilePath
showsPrec :: Int -> BuildResult -> ShowS
$cshowsPrec :: Int -> BuildResult -> ShowS
Show
data BuildFailure = BuildFailure {
BuildFailure -> Maybe FilePath
buildFailureLogFile :: Maybe FilePath,
BuildFailure -> BuildFailureReason
buildFailureReason :: BuildFailureReason
}
deriving (Int -> BuildFailure -> ShowS
[BuildFailure] -> ShowS
BuildFailure -> FilePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [BuildFailure] -> ShowS
$cshowList :: [BuildFailure] -> ShowS
show :: BuildFailure -> FilePath
$cshow :: BuildFailure -> FilePath
showsPrec :: Int -> BuildFailure -> ShowS
$cshowsPrec :: Int -> BuildFailure -> ShowS
Show, Typeable)
instance Exception BuildFailure
data BuildFailureReason = DependentFailed PackageId
| DownloadFailed SomeException
| UnpackFailed SomeException
| ConfigureFailed SomeException
| BuildFailed SomeException
| ReplFailed SomeException
| HaddocksFailed SomeException
| TestsFailed SomeException
| BenchFailed SomeException
| InstallFailed SomeException
deriving Int -> BuildFailureReason -> ShowS
[BuildFailureReason] -> ShowS
BuildFailureReason -> FilePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [BuildFailureReason] -> ShowS
$cshowList :: [BuildFailureReason] -> ShowS
show :: BuildFailureReason -> FilePath
$cshow :: BuildFailureReason -> FilePath
showsPrec :: Int -> BuildFailureReason -> ShowS
$cshowsPrec :: Int -> BuildFailureReason -> ShowS
Show