analyzePackages :: MonadIO m => (Text -> Manifest -> StateT (Map Text Package, Renames) m ())
                -> FilePath -> m (Map Text Package, Renames)
analyzePackages perPackage manifestPath = flip execStateT (mempty, mempty) $ do
    manifests <- readManifests manifestPath
    imapM_ perPackage manifests
analyzePackages :: MonadIO m => (Text -> Manifest -> StateT (Map Text Package, Renames) m ())
                -> FilePath -> m (Map Text Package, Renames)
analyzePackages perPackage manifestPath = flip execStateT (mempty, mempty) $ do
    manifests <- readManifests manifestPath
    imapM_ perPackage manifests
analyzePackages perPackage manifestPath = flip execStateT (mempty, mempty) $ do
    manifests <- readManifests manifestPath
    imapM_ perPackage manifests