git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1329 from hdgarrood/psc-publish-windows
3bf1456Gary Burgess
src/Language/PureScript/Publish.hs+2−1
@@ -44,6 +44,7 @@ import Control.Monad.Writer
44import System.Directory (doesFileExist, findExecutable)
44import System.Directory (doesFileExist, findExecutable)
45import System.Process (readProcess)
45import System.Process (readProcess)
46import System.Exit (exitFailure)
46import System.Exit (exitFailure)
47+import System.FilePath (pathSeparator)
47import qualified System.FilePath.Glob as Glob
48import qualified System.FilePath.Glob as Glob
48import qualified System.Info
49import qualified System.Info
49
50
@@ -352,7 +353,7 @@ withPackageName fp = (,fp) <$> getPackageName fp
352
353
353getPackageName :: FilePath -> Maybe PackageName
354getPackageName :: FilePath -> Maybe PackageName
354getPackageName fp = do
355getPackageName fp = do
355− let xs = splitOn "/" fp
356+ let xs = splitOn [pathSeparator] fp
356 ys <- stripPrefix ["bower_components"] xs
357 ys <- stripPrefix ["bower_components"] xs
357 y <- headMay ys
358 y <- headMay ys
358 case Bower.mkPackageName y of
359 case Bower.mkPackageName y of
src/Language/PureScript/Publish/Utils.hs+18−2
@@ -2,8 +2,11 @@
2module Language.PureScript.Publish.Utils where
2module Language.PureScript.Publish.Utils where
3
3
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
8
11
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
19+ if null fails
20+ then return paths
21+ else do
22+ let p = hPutStrLn stderr
23+ p "Internal error in Language.PureScript.Publish.Utils.globRelative"
24+ p "Unmatched files:"
25+ mapM_ p fails
26+ exitFailure
27+
28+ where
29+ stripPrefix' prefix dir =
30+ maybe (Left dir) Right $ stripPrefix prefix dir
15
31
16-- | Glob pattern for PureScript source files.
32-- | Glob pattern for PureScript source files.
17purescriptSourceFiles :: Glob.Pattern
33purescriptSourceFiles :: Glob.Pattern