1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| | From 8617ba8f391da875ea0d59c6b8fdce26b64e2abd Mon Sep 17 00:00:00 2001
From: David Craven <david@craven.ch>
Date: Sun, 6 Nov 2016 15:46:50 +0100
Subject: [PATCH 1/2] IDRIS_LIBRARY_PATH accepts a colon separated search path.
* src/Idris/Imports.hs (installedPackages): SplitOn colon and concatMap
the results.
---
src/Idris/Imports.hs | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/Idris/Imports.hs b/src/Idris/Imports.hs
index f7bec7be..7018ec57 100644
--- a/src/Idris/Imports.hs
+++ b/src/Idris/Imports.hs
@@ -18,6 +18,7 @@ import IRTS.System (getIdrisLibDir)
import Control.Applicative ((<$>))
import Control.Monad.State.Strict
import Data.List (isSuffixOf)
+import Data.List.Split (splitOn)
import System.Directory
import System.FilePath
@@ -94,7 +95,7 @@ findPkgIndex p = do let idx = pkgIndex p
installedPackages :: IO [String]
installedPackages = do
idir <- getIdrisLibDir
- filterM (goodDir idir) =<< dirContents idir
+ filterM (goodDir idir) =<< concat <$> (mapM dirContents (splitOn ":" idir))
where
allFilesInDir base fp = do
let fullpath = base </> fp
@@ -102,7 +103,9 @@ installedPackages = do
if isDir
then fmap concat (mapM (allFilesInDir fullpath) =<< dirContents fullpath)
else return [fp]
- dirContents = fmap (filter (not . (`elem` [".", ".."]))) . getDirectoryContents
+ prependDirname dir = fmap (fmap (dir </>))
+ filterPaths = fmap (filter (not . (`elem` [".", ".."])))
+ dirContents dir = prependDirname dir (filterPaths (getDirectoryContents dir))
goodDir idir d = any (".ibc" `isSuffixOf`) <$> allFilesInDir idir d
--
2.11.0
|