@@ -2,8 +2,11 @@
2module Language.PureScript.Publish.Utils where
2module Language.PureScript.Publish.Utils where
4import Data.List
4import Data.List
5−import Data.Maybe
5+import Data.Either (partitionEithers)
6import System.Directory
6import System.Directory
7+import System.Exit (exitFailure)
8+import System.IO (hPutStrLn, stderr)
9+import System.FilePath (pathSeparator)
7import qualified System.FilePath.Glob as Glob
10import qualified System.FilePath.Glob as Glob
9-- | Glob relative to the current directory, and produce relative pathnames.
12-- | Glob relative to the current directory, and produce relative pathnames.
@@ -11,7 +14,20 @@ globRelative :: Glob.Pattern -> IO [FilePath]
11globRelative pat = do
14globRelative pat = do
12 currentDir <- getCurrentDirectory
15 currentDir <- getCurrentDirectory
13 filesAbsolute <- Glob.globDir1 pat currentDir
16 filesAbsolute <- Glob.globDir1 pat currentDir
14− return (mapMaybe (stripPrefix (currentDir ++ "/")) filesAbsolute)
17+ let prefix = currentDir ++ [pathSeparator]
18+ let (fails, paths) = partitionEithers . map (stripPrefix' prefix) $ filesAbsolute
22+ let p = hPutStrLn stderr
23+ p "Internal error in Language.PureScript.Publish.Utils.globRelative"
29+ stripPrefix' prefix dir =
30+ maybe (Left dir) Right $ stripPrefix prefix dir
16-- | Glob pattern for PureScript source files.
32-- | Glob pattern for PureScript source files.
17purescriptSourceFiles :: Glob.Pattern
33purescriptSourceFiles :: Glob.Pattern