packages feed

packdeps-0.0.0: packdeps-cli.hs

import Distribution.PackDeps
import System.Environment (getArgs)
import Distribution.Text (display)
import Distribution.Package (PackageName (PackageName))

main :: IO ()
main = do
    newest <- loadNewest
    getArgs >>= mapM_ (go newest)
  where
    go newest fp = do
        mdi <- loadPackage fp
        di <-
            case mdi of
                Just di -> return di
                Nothing -> error $ "Could not parse cabal file: " ++ fp
        case checkDeps newest di of
            (pn, v, AllNewest) ->
                putStrLn $ concat
                    [ unPackageName pn
                    , "-"
                    , display v
                    , ": Can use newest versions of all dependencies"
                    ]
            (pn, v, WontAccept p _) -> do
                putStrLn $ concat
                    [ unPackageName pn
                    , "-"
                    , display v
                    , ": Cannot accept the following packages"
                    ]
                flip mapM_ p $ \(x, y) -> putStrLn $ x ++ " " ++ y
        putStrLn ""

unPackageName :: PackageName -> String
unPackageName (PackageName n) = n