haskell-ci-0.12: src/HaskellCI/Jobs.hs
{-# LANGUAGE RecordWildCards #-}
-- | Which jobs to generate. Also helper for diagnostics output.
module HaskellCI.Jobs where
import HaskellCI.Prelude
import qualified Data.Set as S
import qualified Distribution.Pretty as C
import HaskellCI.Compiler
import HaskellCI.Config
import HaskellCI.Diagnostics
import HaskellCI.Package
import HaskellCI.TestedWith
data JobVersions = JobVersions
{ versions :: Set CompilerVersion -- ^ all jobs
, osxVersions :: Set Version -- ^ osx jobs: GHC only
, omittedOsxVersions :: Set Version
}
describeJobs
:: MonadDiagnostics m
=> String -- ^ config
-> TestedWithJobs
-> JobVersions
-> [Package] -> m ()
describeJobs typ twj JobVersions {..} pkgs = do
putStrLnInfo $ "Generating " ++ typ ++ " for testing for GHC versions: " ++ ghcVersions
case twj of
TestedWithUniform -> pure ()
TestedWithAny -> for_ pkgs $ \pkg -> do
-- this omits HEAD version.
let vr = pkgJobs pkg
let vs = showVersions vr
putStrLnInfo $ pkgName pkg ++ " " ++ ": " ++ vs
unless (null osxVersions) $ do
putStrLnInfo $ "Also OSX jobs for: " ++ ghcOsxVersions
unless (S.null omittedOsxVersions) $
putStrLnWarn $ "Not all GHC versions specified with --osx are generated: " ++ ghcOmittedOsxVersions
where
showVersions :: Set CompilerVersion -> String
showVersions = unwords . map dispGhcVersionShort . S.toList
showVersionsV :: Set Version -> String
showVersionsV = unwords . map C.prettyShow . S.toList
ghcVersions :: String
ghcVersions = showVersions versions
ghcOsxVersions :: String
ghcOsxVersions = showVersionsV osxVersions
ghcOmittedOsxVersions :: String
ghcOmittedOsxVersions = showVersionsV omittedOsxVersions
makeJobVersions :: Config -> Set CompilerVersion -> JobVersions
makeJobVersions Config {..} versions' = JobVersions {..} where
-- All jobs
versions :: Set CompilerVersion
versions
| cfgGhcHead = S.insert GHCHead versions'
| otherwise = versions'
osxVersions' :: Set Version
osxVersions' = cfgOsx
osxVersions, omittedOsxVersions :: Set Version
(osxVersions, omittedOsxVersions) = S.partition (\x -> GHC x `S.member` versions') osxVersions'