cabalg 0.2.0 → 0.2.1
raw patch · 2 files changed
+17/−11 lines, 2 filesdep +randomdep −temporary
Dependencies added: random
Dependencies removed: temporary
Files
- cabalg.cabal +2/−2
- src/Main.hs +15/−9
cabalg.cabal view
@@ -1,5 +1,5 @@ name: cabalg-version: 0.2.0+version: 0.2.1 synopsis: alias for cabal install from given git repo license: MIT license-file: LICENSE@@ -46,9 +46,9 @@ , process >= 1.2 , directory >= 1.2 , filepath >= 1.3- , temporary >= 1.1.2.4 , filemanip >= 0.3.5.2 , split >= 0.2.2+ , random >= 1.0.1.1 default-language: Haskell2010
src/Main.hs view
@@ -1,13 +1,15 @@ {-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-} import Control.Applicative import Control.Arrow (second)+import Control.Monad import Data.List.Split (splitOn) import Data.Maybe (catMaybes, fromMaybe, listToMaybe)-import System.Directory (getCurrentDirectory)+import System.Directory (createDirectory, getCurrentDirectory) import System.Environment+import System.FilePath import System.FilePath.Find-import System.IO.Temp (createTempDirectory) import System.Process (callProcess)+import System.Random import Git @@ -28,14 +30,18 @@ fetch :: String -> IO (Maybe FilePath) fetch urlAndMaybeRevision = do- current_dir <- getCurrentDirectory- let maybeRevision = listToMaybe . tail . splitOn "@" $ urlAndMaybeRevision- url = head $ splitOn "@" urlAndMaybeRevision- cabal_dir <- createTempDirectory current_dir ("cabalg_" ++ last (splitOn "/" url) ++ "X")+ currentDir <- getCurrentDirectory+ cabalDir <- (currentDir </>) . addName <$> genstr+ createDirectory cabalDir case maybeRevision of- Just revision -> cloneRevision url revision cabal_dir- Nothing -> clone url cabal_dir- listToMaybe <$> find always (extension ==? ".cabal") cabal_dir+ Just revision -> cloneRevision url revision cabalDir+ Nothing -> clone url cabalDir+ listToMaybe <$> find always (extension ==? ".cabal") cabalDir+ where+ maybeRevision = listToMaybe . tail . splitOn "@" $ urlAndMaybeRevision+ url = head $ splitOn "@" urlAndMaybeRevision+ genstr = liftM (take 10 . randomRs ('a','z')) newStdGen+ addName = (("cabalg_" ++ last (splitOn "/" url)) ++) . ('_' :) cabalInstall :: [String] -> Maybe String -> IO () cabalInstall cabalFiles args = callProcess "cabal" $ "install" : cabalFiles ++ words (fromMaybe "" args)