packages feed

cabal-nirvana 0.2 → 0.2.1

raw patch · 2 files changed

+21/−9 lines, 2 files

Files

cabal-nirvana.cabal view
@@ -1,5 +1,5 @@ Name:                cabal-nirvana-Version:             0.2+Version:             0.2.1 Synopsis:            Avoid Cabal dependency hell by constraining to known good versions. Description:         This tool takes a list of known compatible versions of libraries and forces them to be used. This should bypass a lot of cabal dependency hell, thereby inducing nirvana.                      .@@ -34,6 +34,7 @@                      , directory                      , tar >= 0.4 && < 0.5                      , bytestring+  Other-modules:     Paths_cabal_nirvana  Executable cabal-nirvana-generate   Main-is:             generate.hs
cabal-nirvana.hs view
@@ -4,7 +4,7 @@ import Data.Maybe (catMaybes) import Data.Char (isSpace) import Data.List (isPrefixOf, foldl')-import System.Exit (exitWith, ExitCode (ExitSuccess))+import System.Exit (exitWith, ExitCode (ExitSuccess), exitFailure) import System.Cmd (rawSystem) import Network.HTTP (simpleHTTP, getRequest, getResponseBody) import qualified Data.ByteString.Lazy as L@@ -13,7 +13,12 @@ import qualified Data.Map as Map import Control.Monad (unless) import Data.Maybe (fromMaybe)+import qualified Paths_cabal_nirvana+import Data.Version (showVersion) +currVersion :: String+currVersion = showVersion Paths_cabal_nirvana.version+ indexFile :: IO FilePath indexFile = do     dir <- getAppUserDataDirectory "cabal"@@ -91,7 +96,7 @@     str <- simpleHTTP (getRequest url) >>= getResponseBody     nirvanaFile >>= flip writeFile str   where-    url = fromMaybe "http://www.snoyman.com/cabal-nirvana/yesod" murl+    url = fromMaybe "http://yesodweb.github.com/nirvana" murl  start :: Maybe String -> IO () start mnfp = do@@ -107,16 +112,22 @@       where         go front Tar.Done = return $ front []         go _ (Tar.Fail e) = throwIO e-        go front (Tar.Next e es) =-            go front' es+        go front (Tar.Next e es)+            | p == "cabal-nirvana" && v /= currVersion = do+                putStrLn "Your version of cabal-nirvana is out-of-date."+                putStrLn $ "Your version: " ++ currVersion+                putStrLn $ "Latest version: " ++ v+                putStrLn "Please update by running:"+                putStrLn "    cabal install cabal-nirvana"+                exitFailure+            | otherwise = go front' es           where             fp = Tar.entryPath e             (p, fp') = break (== '/') fp             v = takeWhile (/= '/') $ drop 1 fp'-            front' =-                if toRemove p v-                    then front-                    else front . (e:)+            front'+                | toRemove p v = front+                | otherwise = front . (e:)          toRemove _ "" = False         toRemove p v =