23 lines
926 B
Haskell
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
|