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.FileMonitor (MonitorChangedReason (..))
import Distribution.Client.Types (DocsResult, TestsResult)
import Distribution.InstalledPackageInfo (InstalledPackageInfo)
import Distribution.Package (PackageId, UnitId)
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 " FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath -> FilePath
forall a. Show a => a -> FilePath
show FilePath
fp
buildStatusToString (BuildStatusRebuild FilePath
fp BuildStatusRebuild
_) = FilePath
"BuildStatusRebuild " FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath -> FilePath
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 -> FilePath -> FilePath
[BuildResult] -> FilePath -> FilePath
BuildResult -> FilePath
(Int -> BuildResult -> FilePath -> FilePath)
-> (BuildResult -> FilePath)
-> ([BuildResult] -> FilePath -> FilePath)
-> Show BuildResult
forall a.
(Int -> a -> FilePath -> FilePath)
-> (a -> FilePath) -> ([a] -> FilePath -> FilePath) -> Show a
$cshowsPrec :: Int -> BuildResult -> FilePath -> FilePath
showsPrec :: Int -> BuildResult -> FilePath -> FilePath
$cshow :: BuildResult -> FilePath
show :: BuildResult -> FilePath
$cshowList :: [BuildResult] -> FilePath -> FilePath
showList :: [BuildResult] -> FilePath -> FilePath
Show)
data BuildFailure = BuildFailure
{ BuildFailure -> Maybe FilePath
buildFailureLogFile :: Maybe FilePath
, BuildFailure -> BuildFailureReason
buildFailureReason :: BuildFailureReason
}
deriving (Int -> BuildFailure -> FilePath -> FilePath
[BuildFailure] -> FilePath -> FilePath
BuildFailure -> FilePath
(Int -> BuildFailure -> FilePath -> FilePath)
-> (BuildFailure -> FilePath)
-> ([BuildFailure] -> FilePath -> FilePath)
-> Show BuildFailure
forall a.
(Int -> a -> FilePath -> FilePath)
-> (a -> FilePath) -> ([a] -> FilePath -> FilePath) -> Show a
$cshowsPrec :: Int -> BuildFailure -> FilePath -> FilePath
showsPrec :: Int -> BuildFailure -> FilePath -> FilePath
$cshow :: BuildFailure -> FilePath
show :: BuildFailure -> FilePath
$cshowList :: [BuildFailure] -> FilePath -> FilePath
showList :: [BuildFailure] -> FilePath -> FilePath
Show)
instance Exception BuildFailure
data BuildFailureReason
= DependentFailed PackageId
| GracefulFailure String
| DownloadFailed SomeException
| UnpackFailed SomeException
| ConfigureFailed SomeException
| BuildFailed SomeException
| ReplFailed SomeException
| HaddocksFailed SomeException
| TestsFailed SomeException
| BenchFailed SomeException
| InstallFailed SomeException
deriving (Int -> BuildFailureReason -> FilePath -> FilePath
[BuildFailureReason] -> FilePath -> FilePath
BuildFailureReason -> FilePath
(Int -> BuildFailureReason -> FilePath -> FilePath)
-> (BuildFailureReason -> FilePath)
-> ([BuildFailureReason] -> FilePath -> FilePath)
-> Show BuildFailureReason
forall a.
(Int -> a -> FilePath -> FilePath)
-> (a -> FilePath) -> ([a] -> FilePath -> FilePath) -> Show a
$cshowsPrec :: Int -> BuildFailureReason -> FilePath -> FilePath
showsPrec :: Int -> BuildFailureReason -> FilePath -> FilePath
$cshow :: BuildFailureReason -> FilePath
show :: BuildFailureReason -> FilePath
$cshowList :: [BuildFailureReason] -> FilePath -> FilePath
showList :: [BuildFailureReason] -> FilePath -> FilePath
Show)