{-# 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 -> String
buildStatusToString BuildStatus
BuildStatusPreExisting = String
"BuildStatusPreExisting"
buildStatusToString BuildStatus
BuildStatusInstalled = String
"BuildStatusInstalled"
buildStatusToString BuildStatus
BuildStatusDownload = String
"BuildStatusDownload"
buildStatusToString (BuildStatusUnpack String
fp) = String
"BuildStatusUnpack " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
forall a. Show a => a -> String
show String
fp
buildStatusToString (BuildStatusRebuild String
fp BuildStatusRebuild
_) = String
"BuildStatusRebuild " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
forall a. Show a => a -> String
show String
fp
buildStatusToString (BuildStatusUpToDate BuildResult
_) = String
"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 String
buildResultLogFile :: Maybe FilePath
}
deriving Int -> BuildResult -> String -> String
[BuildResult] -> String -> String
BuildResult -> String
(Int -> BuildResult -> String -> String)
-> (BuildResult -> String)
-> ([BuildResult] -> String -> String)
-> Show BuildResult
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [BuildResult] -> String -> String
$cshowList :: [BuildResult] -> String -> String
show :: BuildResult -> String
$cshow :: BuildResult -> String
showsPrec :: Int -> BuildResult -> String -> String
$cshowsPrec :: Int -> BuildResult -> String -> String
Show
data BuildFailure = BuildFailure {
BuildFailure -> Maybe String
buildFailureLogFile :: Maybe FilePath,
BuildFailure -> BuildFailureReason
buildFailureReason :: BuildFailureReason
}
deriving (Int -> BuildFailure -> String -> String
[BuildFailure] -> String -> String
BuildFailure -> String
(Int -> BuildFailure -> String -> String)
-> (BuildFailure -> String)
-> ([BuildFailure] -> String -> String)
-> Show BuildFailure
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [BuildFailure] -> String -> String
$cshowList :: [BuildFailure] -> String -> String
show :: BuildFailure -> String
$cshow :: BuildFailure -> String
showsPrec :: Int -> BuildFailure -> String -> String
$cshowsPrec :: Int -> BuildFailure -> String -> String
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 -> String -> String
[BuildFailureReason] -> String -> String
BuildFailureReason -> String
(Int -> BuildFailureReason -> String -> String)
-> (BuildFailureReason -> String)
-> ([BuildFailureReason] -> String -> String)
-> Show BuildFailureReason
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [BuildFailureReason] -> String -> String
$cshowList :: [BuildFailureReason] -> String -> String
show :: BuildFailureReason -> String
$cshow :: BuildFailureReason -> String
showsPrec :: Int -> BuildFailureReason -> String -> String
$cshowsPrec :: Int -> BuildFailureReason -> String -> String
Show