mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-02-12 22:37:30 +01:00
Dependency injection of newBuildPlan (#375)
This commit is contained in:
parent
ee9bc2bbed
commit
5da6e5cfa4
@ -14,6 +14,7 @@ module Stackage.BuildPlan
|
|||||||
, PackagePlan (..)
|
, PackagePlan (..)
|
||||||
, newBuildPlan
|
, newBuildPlan
|
||||||
, makeToolMap
|
, makeToolMap
|
||||||
|
, getLatestAllowedPlans
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad.State.Strict (execState, get, put)
|
import Control.Monad.State.Strict (execState, get, put)
|
||||||
@ -90,9 +91,9 @@ instance FromJSON PackagePlan where
|
|||||||
ppDesc <- o .: "description"
|
ppDesc <- o .: "description"
|
||||||
return PackagePlan {..}
|
return PackagePlan {..}
|
||||||
|
|
||||||
newBuildPlan :: MonadIO m => BuildConstraints -> m BuildPlan
|
-- | Make a build plan given these package set and build constraints.
|
||||||
newBuildPlan bc@BuildConstraints {..} = liftIO $ do
|
newBuildPlan :: MonadIO m => Map PackageName PackagePlan -> BuildConstraints -> m BuildPlan
|
||||||
packagesOrig <- getLatestDescriptions (isAllowed bc) (mkPackagePlan bc)
|
newBuildPlan packagesOrig bc@BuildConstraints {..} = liftIO $ do
|
||||||
let toolMap = makeToolMap packagesOrig
|
let toolMap = makeToolMap packagesOrig
|
||||||
packages = populateUsers $ removeUnincluded bc toolMap packagesOrig
|
packages = populateUsers $ removeUnincluded bc toolMap packagesOrig
|
||||||
toolNames :: [ExeName]
|
toolNames :: [ExeName]
|
||||||
@ -205,3 +206,9 @@ mkPackagePlan bc gpd = do
|
|||||||
getFlag MkFlag {..} =
|
getFlag MkFlag {..} =
|
||||||
(flagName, fromMaybe flagDefault $ lookup flagName overrides)
|
(flagName, fromMaybe flagDefault $ lookup flagName overrides)
|
||||||
flags = mapFromList $ map getFlag $ genPackageFlags gpd
|
flags = mapFromList $ map getFlag $ genPackageFlags gpd
|
||||||
|
|
||||||
|
getLatestAllowedPlans :: MonadIO m => BuildConstraints -> m (Map PackageName PackagePlan)
|
||||||
|
getLatestAllowedPlans bc =
|
||||||
|
getLatestDescriptions
|
||||||
|
(isAllowed bc)
|
||||||
|
(mkPackagePlan bc)
|
||||||
|
|||||||
@ -54,7 +54,9 @@ getSettings :: Manager -> BuildType -> IO Settings
|
|||||||
getSettings man Nightly = do
|
getSettings man Nightly = do
|
||||||
day <- tshow . utctDay <$> getCurrentTime
|
day <- tshow . utctDay <$> getCurrentTime
|
||||||
let slug' = "nightly-" ++ day
|
let slug' = "nightly-" ++ day
|
||||||
plan' <- defaultBuildConstraints man >>= newBuildPlan
|
bc <- defaultBuildConstraints man
|
||||||
|
pkgs <- getLatestAllowedPlans bc
|
||||||
|
plan' <- newBuildPlan pkgs bc
|
||||||
return Settings
|
return Settings
|
||||||
{ planFile = fpFromText ("nightly-" ++ day) <.> "yaml"
|
{ planFile = fpFromText ("nightly-" ++ day) <.> "yaml"
|
||||||
, buildDir = fpFromText $ "builds/stackage-nightly-" ++ day
|
, buildDir = fpFromText $ "builds/stackage-nightly-" ++ day
|
||||||
@ -81,14 +83,18 @@ getSettings man (LTS bumpType) = do
|
|||||||
case mlts of
|
case mlts of
|
||||||
Nothing -> LTSVer 0 0
|
Nothing -> LTSVer 0 0
|
||||||
Just (LTSVer x _) -> LTSVer (x + 1) 0
|
Just (LTSVer x _) -> LTSVer (x + 1) 0
|
||||||
plan' <- defaultBuildConstraints man >>= newBuildPlan
|
bc <- defaultBuildConstraints man
|
||||||
|
pkgs <- getLatestAllowedPlans bc
|
||||||
|
plan' <- newBuildPlan pkgs bc
|
||||||
return (new, plan')
|
return (new, plan')
|
||||||
Minor -> do
|
Minor -> do
|
||||||
old <- maybe (error "No LTS plans found in current directory") return mlts
|
old <- maybe (error "No LTS plans found in current directory") return mlts
|
||||||
oldplan <- decodeFileEither (fpToString $ renderLTSVer old)
|
oldplan <- decodeFileEither (fpToString $ renderLTSVer old)
|
||||||
>>= either throwM return
|
>>= either throwM return
|
||||||
let new = incrLTSVer old
|
let new = incrLTSVer old
|
||||||
plan' <- updateBuildPlan oldplan
|
let bc = updateBuildConstraints oldplan
|
||||||
|
pkgs <- getLatestAllowedPlans bc
|
||||||
|
plan' <- newBuildPlan pkgs bc
|
||||||
return (new, plan')
|
return (new, plan')
|
||||||
|
|
||||||
let newfile = renderLTSVer new
|
let newfile = renderLTSVer new
|
||||||
@ -148,7 +154,8 @@ justCheck = withManager tlsManagerSettings $ \man -> do
|
|||||||
bc <- defaultBuildConstraints man
|
bc <- defaultBuildConstraints man
|
||||||
|
|
||||||
putStrLn "Creating build plan"
|
putStrLn "Creating build plan"
|
||||||
plan <- newBuildPlan bc
|
plans <- getLatestAllowedPlans bc
|
||||||
|
plan <- newBuildPlan plans bc
|
||||||
|
|
||||||
putStrLn $ "Writing build plan to check-plan.yaml"
|
putStrLn $ "Writing build plan to check-plan.yaml"
|
||||||
encodeFile "check-plan.yaml" plan
|
encodeFile "check-plan.yaml" plan
|
||||||
|
|||||||
@ -15,8 +15,9 @@ import Stackage.BuildConstraints
|
|||||||
import Stackage.BuildPlan
|
import Stackage.BuildPlan
|
||||||
import Stackage.Prelude
|
import Stackage.Prelude
|
||||||
|
|
||||||
updateBuildPlan :: BuildPlan -> IO BuildPlan
|
updateBuildPlan :: Map PackageName PackagePlan -> BuildPlan -> IO BuildPlan
|
||||||
updateBuildPlan = newBuildPlan . updateBuildConstraints
|
updateBuildPlan packagesOrig
|
||||||
|
= newBuildPlan packagesOrig . updateBuildConstraints
|
||||||
|
|
||||||
updateBuildConstraints :: BuildPlan -> BuildConstraints
|
updateBuildConstraints :: BuildPlan -> BuildConstraints
|
||||||
updateBuildConstraints BuildPlan {..} =
|
updateBuildConstraints BuildPlan {..} =
|
||||||
|
|||||||
@ -15,7 +15,8 @@ import Network.HTTP.Client.TLS (tlsManagerSettings)
|
|||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = it "works" $ withManager tlsManagerSettings $ \man -> do
|
spec = it "works" $ withManager tlsManagerSettings $ \man -> do
|
||||||
bc <- defaultBuildConstraints man
|
bc <- defaultBuildConstraints man
|
||||||
bp <- newBuildPlan bc
|
pkgs <- getLatestAllowedPlans bc
|
||||||
|
bp <- newBuildPlan pkgs bc
|
||||||
let bs = Y.encode bp
|
let bs = Y.encode bp
|
||||||
ebp' = Y.decodeEither bs
|
ebp' = Y.decodeEither bs
|
||||||
|
|
||||||
@ -28,7 +29,7 @@ spec = it "works" $ withManager tlsManagerSettings $ \man -> do
|
|||||||
|
|
||||||
bpGithubUsers bp' `shouldBe` bpGithubUsers bp
|
bpGithubUsers bp' `shouldBe` bpGithubUsers bp
|
||||||
when (bp' /= bp) $ error "bp' /= bp"
|
when (bp' /= bp) $ error "bp' /= bp"
|
||||||
bp2 <- updateBuildPlan bp
|
bp2 <- updateBuildPlan pkgs bp
|
||||||
when (dropVersionRanges bp2 /= dropVersionRanges bp) $ error "bp2 /= bp"
|
when (dropVersionRanges bp2 /= dropVersionRanges bp) $ error "bp2 /= bp"
|
||||||
where
|
where
|
||||||
dropVersionRanges bp =
|
dropVersionRanges bp =
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user