stackage-server/Handler/BuildPlan.hs
2015-05-11 20:23:09 +03:00

23 lines
926 B
Haskell

{-# LANGUAGE ConstraintKinds #-}
module Handler.BuildPlan where
import Import hiding (get, PackageName (..), Version (..), DList)
import Stackage.Types
import Stackage.BuildPlan
import Stackage.Database
getBuildPlanR :: SnapName -> Handler TypedContent
getBuildPlanR slug = do
fullDeps <- (== Just "true") <$> lookupGetParam "full-deps"
spec <- parseSnapshotSpec $ toPathPiece slug
let set = setShellCommands simpleCommands
$ setSnapshot spec
$ setFullDeps fullDeps
defaultSettings
packages <- lookupGetParams "package" >>= mapM simpleParse
when (null packages) $ invalidArgs ["Must provide at least one package"]
toInstall <- liftIO $ getBuildPlan set packages
selectRep $ do
provideRep $ return $ toSimpleText toInstall
provideRep $ return $ toJSON toInstall
provideRepType "application/x-sh" $ return $ toShellScript set toInstall