git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
[psc-ide] create the output folder if it's missing
7eab9e7Christoph Hegemann
psc-ide-server/Main.hs+11−1
@@ -82,7 +82,17 @@ main = do
82 maybe (pure ()) setCurrentDirectory dir
82 maybe (pure ()) setCurrentDirectory dir
83 serverState <- newTVarIO emptyPscIdeState
83 serverState <- newTVarIO emptyPscIdeState
84 cwd <- getCurrentDirectory
84 cwd <- getCurrentDirectory
85+ let fullOutputPath = cwd </> outputPath
86+
87+ doesDirectoryExist fullOutputPath
88+ >>= flip unless
89+ (do putStrLn ("Your output directory didn't exist. I'll create it at: " <> fullOutputPath)
90+ createDirectory fullOutputPath
91+ putStrLn "This usually means you didn't compile your project yet."
92+ putStrLn "psc-ide needs you to compile your project (for example by running pulp build)"
93+ )
94+
85− _ <- forkFinally (watcher serverState (cwd </> outputPath)) print
95+ _ <- forkFinally (watcher serverState fullOutputPath) print
86 let conf =
96 let conf =
87 Configuration
97 Configuration
88 {
98 {
src/Language/PureScript/Ide.hs+6−3
@@ -29,6 +29,7 @@ module Language.PureScript.Ide
29import Prelude ()
29import Prelude ()
30import Prelude.Compat
30import Prelude.Compat
31
31
32+import Control.Monad (unless)
32import Control.Monad.Error.Class
33import Control.Monad.Error.Class
33import Control.Monad.IO.Class
34import Control.Monad.IO.Class
34import "monad-logger" Control.Monad.Logger
35import "monad-logger" Control.Monad.Logger
@@ -45,18 +46,18 @@ import Language.PureScript.Ide.Completion
45import Language.PureScript.Ide.Error
46import Language.PureScript.Ide.Error
46import Language.PureScript.Ide.Externs
47import Language.PureScript.Ide.Externs
47import Language.PureScript.Ide.Filter
48import Language.PureScript.Ide.Filter
48−import Language.PureScript.Ide.Imports hiding (Import)
49+import Language.PureScript.Ide.Imports hiding (Import)
49import Language.PureScript.Ide.Matcher
50import Language.PureScript.Ide.Matcher
50import Language.PureScript.Ide.Pursuit
51import Language.PureScript.Ide.Pursuit
52+import Language.PureScript.Ide.Rebuild
51import Language.PureScript.Ide.Reexports
53import Language.PureScript.Ide.Reexports
52import Language.PureScript.Ide.SourceFile
54import Language.PureScript.Ide.SourceFile
53import Language.PureScript.Ide.State
55import Language.PureScript.Ide.State
54import Language.PureScript.Ide.Types
56import Language.PureScript.Ide.Types
55import Language.PureScript.Ide.Util
57import Language.PureScript.Ide.Util
56−import Language.PureScript.Ide.Rebuild
57import System.Directory
58import System.Directory
58−import System.FilePath
59import System.Exit
59import System.Exit
60+import System.FilePath
60
61
61handleCommand :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
62handleCommand :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
62 Command -> m Success
63 Command -> m Success
@@ -215,6 +216,8 @@ loadAllModules = do
215 outputPath <- confOutputPath . envConfiguration <$> ask
216 outputPath <- confOutputPath . envConfiguration <$> ask
216 cwd <- liftIO getCurrentDirectory
217 cwd <- liftIO getCurrentDirectory
217 let outputDirectory = cwd </> outputPath
218 let outputDirectory = cwd </> outputPath
219+ liftIO (doesDirectoryExist outputDirectory)
220+ >>= flip unless (throwError (GeneralError "Couldn't locate your output directory"))
218 liftIO (getDirectoryContents outputDirectory)
221 liftIO (getDirectoryContents outputDirectory)
219 >>= liftIO . traverse (getExternsPath outputDirectory)
222 >>= liftIO . traverse (getExternsPath outputDirectory)
220 >>= traverse_ loadExtern . catMaybes
223 >>= traverse_ loadExtern . catMaybes