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