@@ -14,15 +14,21 @@
15module Main where
15module Main where
17−import qualified Language.PureScript as P
18−import System.Console.CmdTheLine
19import Control.Applicative
17import Control.Applicative
20import Control.Monad (forM)
18import Control.Monad (forM)
20+import Data.Version (showVersion)
22+import System.Console.CmdTheLine
23+import System.Directory (createDirectoryIfMissing)
24+import System.FilePath (takeDirectory)
21import System.Exit (exitSuccess, exitFailure)
25import System.Exit (exitSuccess, exitFailure)
22−import qualified System.IO.UTF8 as U
26+
23import Text.Parsec (ParseError)
27import Text.Parsec (ParseError)
29+import qualified Language.PureScript as P
24import qualified Paths_purescript as Paths
30import qualified Paths_purescript as Paths
25−import Data.Version (showVersion)
31+import qualified System.IO.UTF8 as U
27preludeFilename :: IO FilePath
33preludeFilename :: IO FilePath
28preludeFilename = Paths.getDataFileName "prelude/prelude.purs"
34preludeFilename = Paths.getDataFileName "prelude/prelude.purs"
@@ -47,12 +53,15 @@ compile opts input output externs = do
47 exitFailure
53 exitFailure
48 Right (js, exts, _) -> do
54 Right (js, exts, _) -> do
49 case output of
55 case output of
50− Just path -> U.writeFile path js
56+ Just path -> mkdirp path >> U.writeFile path js
51 Nothing -> U.putStrLn js
57 Nothing -> U.putStrLn js
52 case externs of
58 case externs of
59+ Just path -> mkdirp path >> U.writeFile path exts
53 Nothing -> return ()
60 Nothing -> return ()
54− Just filePath -> U.writeFile filePath exts
55 exitSuccess
61 exitSuccess
63+ mkdirp :: FilePath -> IO ()
64+ mkdirp = createDirectoryIfMissing True . takeDirectory
57useStdIn :: Term Bool
66useStdIn :: Term Bool
58useStdIn = value . flag $ (optInfo [ "s", "stdin" ])
67useStdIn = value . flag $ (optInfo [ "s", "stdin" ])