git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Use a --node-flags flag instead
74a5dd3Michael Xavier
psci/Main.hs+15−12
@@ -18,7 +18,7 @@
18module Main where
18module Main where
19
19
20import Data.Foldable (traverse_)
20import Data.Foldable (traverse_)
21−import Data.List (intercalate, isPrefixOf, nub, sortBy, sort, partition)
21+import Data.List (intercalate, isPrefixOf, nub, sortBy, sort)
22import Data.Maybe (mapMaybe)
22import Data.Maybe (mapMaybe)
23import Data.Traversable (traverse)
23import Data.Traversable (traverse)
24import Data.Version (showVersion)
24import Data.Version (showVersion)
@@ -35,7 +35,6 @@ import Control.Monad.Trans.State.Strict
35import qualified Control.Monad.Trans.State.Lazy as L
35import qualified Control.Monad.Trans.State.Lazy as L
36
36
37import Options.Applicative as Opts
37import Options.Applicative as Opts
38−import Options.Applicative.Types as Opts
39
38
40import System.Console.Haskeline
39import System.Console.Haskeline
41import System.Directory (createDirectoryIfMissing, getModificationTime, doesFileExist, findExecutable, getHomeDirectory, getCurrentDirectory)
40import System.Directory (createDirectoryIfMissing, getModificationTime, doesFileExist, findExecutable, getHomeDirectory, getCurrentDirectory)
@@ -58,6 +57,7 @@ import Parser
58
57
59data PSCiOptions = PSCiOptions
58data PSCiOptions = PSCiOptions
60 { psciSingleLineFlag :: Bool
59 { psciSingleLineFlag :: Bool
60+ , psciInputNodeFlags :: [String]
61 , psciInputFile :: [FilePath]
61 , psciInputFile :: [FilePath]
62 }
62 }
63
63
@@ -560,8 +560,8 @@ loadUserConfig = do
560-- |
560-- |
561-- The PSCI main loop.
561-- The PSCI main loop.
562--
562--
563−loop :: PSCiOptions -> [String] -> IO ()
563+loop :: PSCiOptions -> IO ()
564−loop (PSCiOptions singleLineMode files) nflags = do
564+loop (PSCiOptions singleLineMode nflags files) = do
565 config <- loadUserConfig
565 config <- loadUserConfig
566 modulesOrFirstError <- loadAllModules files
566 modulesOrFirstError <- loadAllModules files
567 case modulesOrFirstError of
567 case modulesOrFirstError of
@@ -593,19 +593,22 @@ inputFile = strArgument $
593 metavar "FILE"
593 metavar "FILE"
594 <> Opts.help "Optional .purs files to load on start"
594 <> Opts.help "Optional .purs files to load on start"
595
595
596+nodeFlagsFlag :: Parser [String]
597+nodeFlagsFlag = option parser $
598+ long "node-flags"
599+ <> metavar "NODE_FLAGS"
600+ <> Opts.help "Flags to pass to node, separated by spaces"
601+ where
602+ parser = words' <$> str
603+ words' x = traceShow ("words", x) $ words x
604+
596psciOptions :: Parser PSCiOptions
605psciOptions :: Parser PSCiOptions
597psciOptions = PSCiOptions <$> singleLineFlag
606psciOptions = PSCiOptions <$> singleLineFlag
607+ <*> nodeFlagsFlag
598 <*> many inputFile
608 <*> many inputFile
599
609
600−splitOpts :: PSCiOptions -> (PSCiOptions, [String])
601−splitOpts (opts@PSCiOptions { psciInputFile = fs }) = (opts { psciInputFile = notFlags}, flags)
602− where
603− (flags, notFlags) = partition isFlag fs
604− isFlag ('-':_) = True
605− isFlag _ = False
606−
607main :: IO ()
610main :: IO ()
608−main = uncurry loop . splitOpts =<< execParser opts
611+main = execParser opts >>= loop
609 where
612 where
610 opts = info (version <*> helper <*> psciOptions) infoModList
613 opts = info (version <*> helper <*> psciOptions) infoModList
611 infoModList = fullDesc <> headerInfo <> footerInfo
614 infoModList = fullDesc <> headerInfo <> footerInfo