@@ -28,15 +28,16 @@ setupPackageDatabase
28 -> FilePath -- ^ documentation root
28 -> FilePath -- ^ documentation root
29 -> (ByteString -> IO ()) -- ^ logging
29 -> (ByteString -> IO ()) -- ^ logging
30 -> Map PackageName Version -- ^ packages and versions to be installed
30 -> Map PackageName Version -- ^ packages and versions to be installed
31+ -> (PackageIdentifier -> IO ()) -- ^ callback to be used when unregistering a package
31 -> IO (Set PackageName) -- ^ packages remaining in the database after cleanup
32 -> IO (Set PackageName) -- ^ packages remaining in the database after cleanup
32−setupPackageDatabase mdb docDir log' toInstall = do
33+setupPackageDatabase mdb docDir log' toInstall onUnregister = do
33 registered1 <- getRegisteredPackages flags
34 registered1 <- getRegisteredPackages flags
34 forM_ registered1 $ \pi@(PackageIdentifier name version) ->
35 forM_ registered1 $ \pi@(PackageIdentifier name version) ->
35 case lookup name toInstall of
36 case lookup name toInstall of
36− Just version' | version /= version' -> unregisterPackage log' docDir flags pi
37+ Just version' | version /= version' -> unregisterPackage log' onUnregister docDir flags pi
37 _ -> return ()
38 _ -> return ()
38 broken <- getBrokenPackages flags
39 broken <- getBrokenPackages flags
39− forM_ broken $ unregisterPackage log' docDir flags
40+ forM_ broken $ unregisterPackage log' onUnregister docDir flags
40 foldMap (\(PackageIdentifier name _) -> singletonSet name)
41 foldMap (\(PackageIdentifier name _) -> singletonSet name)
41 <$> getRegisteredPackages flags
42 <$> getRegisteredPackages flags
@@ -78,10 +79,12 @@ parsePackageIdent = fmap fst .
79-- | Unregister a package.
80-- | Unregister a package.
80unregisterPackage :: (ByteString -> IO ()) -- ^ log func
81unregisterPackage :: (ByteString -> IO ()) -- ^ log func
82+ -> (PackageIdentifier -> IO ()) -- ^ callback to be used when unregistering a package
81 -> FilePath -- ^ doc directory
83 -> FilePath -- ^ doc directory
82 -> [String] -> PackageIdentifier -> IO ()
84 -> [String] -> PackageIdentifier -> IO ()
83−unregisterPackage log' docDir flags ident@(PackageIdentifier name _) = do
85+unregisterPackage log' onUnregister docDir flags ident@(PackageIdentifier name _) = do
84 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
86 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
85 void (readProcessWithExitCode
88 void (readProcessWithExitCode
87 ("unregister": flags ++ ["--force", unpack $ display name])
90 ("unregister": flags ++ ["--force", unpack $ display name])