cabal-uninstall 0.1.5 → 0.1.6
raw patch · 2 files changed
+14/−7 lines, 2 files
Files
- cabal-uninstall.cabal +2/−2
- cabal-uninstall.hs +12/−5
cabal-uninstall.cabal view
@@ -1,12 +1,12 @@ name: cabal-uninstall-version: 0.1.5+version: 0.1.6 cabal-version: >= 1.6 stability: alpha description: Very simple script to delete a cabal package. synopsis: Uninstall cabal packages license: BSD3 license-file: LICENSE-author: Jan Christiansen+author: Jan Christiansen, Thomas Miedema maintainer: Jan Christiansen <j.christiansen@monoid-it.de> category: Distribution build-type: Simple
cabal-uninstall.hs view
@@ -1,13 +1,13 @@ module Main where -import Data.List (groupBy)+import Data.List (groupBy, isPrefixOf) import System.Environment (getArgs) import System.Process (system, readProcessWithExitCode) import System.Exit (ExitCode(..)) import System.IO (hFlush, stdout) import System.Directory (doesDirectoryExist, removeDirectoryRecursive)-import System.FilePath (takeDirectory)+import System.FilePath (takeDirectory, takeBaseName) import Control.Monad.Instances () import Control.Monad.Error @@ -21,16 +21,16 @@ mainError :: [String] -> ErrorT String IO () mainError input = do (package, force) <- ErrorT (return (parseArgs input))- info@(PackageInfo _ _ _ libraryDir) <- ErrorT (selectPackageVersion package)+ info@(PackageInfo _ libraryName _ libraryDir) <- ErrorT (selectPackageVersion package) ErrorT (unregisterPackage info force)- lift (removeDirectory "package directory" (takeDirectory libraryDir))+ lift (removeDirectory "package directory" (selectDirectory libraryName libraryDir)) (<|) :: a -> [a] -> [a] x <| xs = xs++[x] usageInfo :: String usageInfo =- "Version: 0.1.5\n\+ "Version: 0.1.6\n\ \Usage: cabal-uninstall {pkg-id} [--force]\n\ \use sudo if the package is installed globally\n" @@ -111,6 +111,13 @@ parseVersion database ("name:":name:"version:":version:"library-dirs:":libraryDirs:rest) = return (PackageInfo database name version libraryDirs, rest) parseVersion _ _ = Left "PackageInfo format unknown"++selectDirectory :: String -> FilePath -> FilePath+selectDirectory libraryName libraryDir+ | libraryName `isPrefixOf` (takeBaseName libraryDir) = libraryDir+ | otherwise =+ -- Old Cabal GHC directory structure: <libdir>/<libraryName>/<compiler>+ takeDirectory libraryDir selectPackageVersion :: String -> IO (Either String PackageInfo) selectPackageVersion package = do