git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Add --node-path option to PSCi (#2507)
1afba5aPhil Freeman
psci/Main.hs+16−10
@@ -72,10 +72,16 @@ inputFile = Opts.strArgument $
72 Opts.metavar "FILE"
72 Opts.metavar "FILE"
73 <> Opts.help "Optional .purs files to load on start"
73 <> Opts.help "Optional .purs files to load on start"
74
74
75+nodePathOption :: Opts.Parser (Maybe FilePath)
76+nodePathOption = Opts.optional . Opts.strOption $
77+ Opts.metavar "FILE"
78+ <> Opts.long "node-path"
79+ <> Opts.help "Path to the Node executable"
80+
75−nodeFlagsFlag :: Opts.Parser [String]
81+nodeFlagsOption :: Opts.Parser [String]
76−nodeFlagsFlag = Opts.option parser $
82+nodeFlagsOption = Opts.option parser $
77 Opts.long "node-opts"
83 Opts.long "node-opts"
78− <> Opts.metavar "NODE_OPTS"
84+ <> Opts.metavar "OPTS"
79 <> Opts.value []
85 <> Opts.value []
80 <> Opts.help "Flags to pass to node, separated by spaces"
86 <> Opts.help "Flags to pass to node, separated by spaces"
81 where
87 where
@@ -90,7 +96,7 @@ port = Opts.option Opts.auto $
90backend :: Opts.Parser Backend
96backend :: Opts.Parser Backend
91backend =
97backend =
92 (browserBackend <$> port)
98 (browserBackend <$> port)
93− <|> (nodeBackend <$> nodeFlagsFlag)
99+ <|> (nodeBackend <$> nodePathOption <*> nodeFlagsOption)
94
100
95psciOptions :: Opts.Parser PSCiOptions
101psciOptions :: Opts.Parser PSCiOptions
96psciOptions = PSCiOptions <$> many inputFile
102psciOptions = PSCiOptions <$> many inputFile
@@ -293,8 +299,8 @@ browserBackend serverPort = Backend setup evaluate reload shutdown
293 result <- takeMVar resultVar
299 result <- takeMVar resultVar
294 putStrLn result
300 putStrLn result
295
301
296−nodeBackend :: [String] -> Backend
302+nodeBackend :: Maybe FilePath -> [String] -> Backend
297−nodeBackend nodeArgs = Backend setup eval reload shutdown
303+nodeBackend nodePath nodeArgs = Backend setup eval reload shutdown
298 where
304 where
299 setup :: IO ()
305 setup :: IO ()
300 setup = return ()
306 setup = return ()
@@ -302,12 +308,12 @@ nodeBackend nodeArgs = Backend setup eval reload shutdown
302 eval :: () -> String -> IO ()
308 eval :: () -> String -> IO ()
303 eval _ _ = do
309 eval _ _ = do
304 writeFile indexFile "require('$PSCI')['$main']();"
310 writeFile indexFile "require('$PSCI')['$main']();"
305− process <- findNodeProcess
311+ process <- maybe findNodeProcess (pure . pure) nodePath
306 result <- traverse (\node -> readProcessWithExitCode node (nodeArgs ++ [indexFile]) "") process
312 result <- traverse (\node -> readProcessWithExitCode node (nodeArgs ++ [indexFile]) "") process
307 case result of
313 case result of
308− Just (ExitSuccess, out, _) -> putStrLn out
314+ Just (ExitSuccess, out, _) -> putStrLn out
309− Just (ExitFailure _, _, err) -> putStrLn err
315+ Just (ExitFailure _, _, err) -> putStrLn err
310− Nothing -> putStrLn "Couldn't find node.js"
316+ Nothing -> putStrLn "Couldn't find node.js"
311
317
312 reload :: () -> IO ()
318 reload :: () -> IO ()
313 reload _ = return ()
319 reload _ = return ()