]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/PursLoader/Options.purs
Bumping version number to 0.6.0-beta.1
[github/fretlink/purs-loader.git] / src / PursLoader / Options.purs
index 165065249fb028a8f52a6b538002b7ce739a8699..0c1453e10a608f540ca406072bdb1d38ad254bea 100644 (file)
 module PursLoader.Options
-  ( pscOptions
-  , loaderSrcOption
-  , loaderFFIOption
-  , Options()
-  , output
+  ( Options(..)
+  , runOptions
   ) where
 
-import Prelude (Unit(), (<>), (<$>), (<<<), (++), (<*>), ($), const, id)
+import Prelude ((<$>), (<<<), id)
 
-import Data.Array (concat)
-import Data.Either (either)
+import Data.Foreign.Class (IsForeign, readProp)
+import Data.Foreign.NullOrUndefined (runNullOrUndefined)
+import Data.Maybe (maybe)
 
-import Data.Foreign (Foreign(), F())
-import Data.Foreign.Class (IsForeign, read, readProp)
-import Data.Foreign.NullOrUndefined (NullOrUndefined(..), runNullOrUndefined)
+import PursLoader.Path (joinPath)
 
-import Data.Maybe (Maybe(..), maybe, fromMaybe)
+newtype Options = Options { bundleOutput :: String }
 
-noPreludeOpt = "no-prelude"
+type Options_ = { bundleOutput :: String }
 
-noOptsOpt = "no-opts"
-
-noMagicDoOpt = "no-magic-do"
-
-noTcoOpt = "no-tco"
-
-verboseErrorsOpt = "verbose-errors"
-
-outputOpt = "output"
-
-commentsOpt = "comments"
-
-noPrefixOpt = "no-prefix"
-
-requirePathOpt = "require-path"
-
-srcOpt = "src"
-
-ffiOpt = "ffi"
-
-newtype Options
-  = Options { noPrelude :: NullOrUndefined Boolean
-            , noOpts :: NullOrUndefined Boolean
-            , noMagicDo :: NullOrUndefined Boolean
-            , noTco :: NullOrUndefined Boolean
-            , verboseErrors :: NullOrUndefined Boolean
-            , comments :: NullOrUndefined Boolean
-            , output :: String
-            , noPrefix :: NullOrUndefined Boolean
-            , requirePath :: String
-            , src :: NullOrUndefined (Array String)
-            , ffi :: NullOrUndefined (Array String)
-            }
-
-output :: Options -> String
-output (Options o) = o.output
+runOptions :: Options -> Options_
+runOptions (Options options) = options
 
 instance isForeignOptions :: IsForeign Options where
-  read obj = Options <$> ({ noPrelude: _
-                          , noOpts: _
-                          , noMagicDo: _
-                          , noTco: _
-                          , verboseErrors: _
-                          , comments: _
-                          , output: _
-                          , noPrefix: _
-                          , requirePath: "../"
-                          , src: _
-                          , ffi: _
-                          } <$> readProp noPreludeOpt obj
-                            <*> readProp noOptsOpt obj
-                            <*> readProp noMagicDoOpt obj
-                            <*> readProp noTcoOpt obj
-                            <*> readProp verboseErrorsOpt obj
-                            <*> readProp commentsOpt obj
-                            <*> (maybe "output" id <<< runNullOrUndefined <$> readProp outputOpt obj)
-                            <*> readProp noPrefixOpt obj
-                            <*> readProp srcOpt obj
-                            <*> readProp ffiOpt obj)
-
-class LoaderOption a where
-  opt :: String -> NullOrUndefined a -> Array String
-
-instance booleanLoaderOption :: LoaderOption Boolean where
-  opt key val = maybe [] (\a -> if a then ["--" ++ key] else []) (runNullOrUndefined val)
-
-instance stringLoaderOption :: LoaderOption String where
-  opt key val = maybe [] (\a -> ["--" ++ key ++ "=" ++ a]) (runNullOrUndefined val)
-
-instance arrayLoaderOption :: (LoaderOption a) => LoaderOption (Array a) where
-  opt key val = concat (opt key <$> (NullOrUndefined <<< Just)
-                                <$> (fromMaybe [] (runNullOrUndefined val)))
-
-pscOptions :: Options -> Array String
-pscOptions (Options a) = opt noPreludeOpt a.noPrelude <>
-                         opt noOptsOpt a.noOpts <>
-                         opt noMagicDoOpt a.noMagicDo <>
-                         opt noTcoOpt a.noTco <>
-                         opt verboseErrorsOpt a.verboseErrors <>
-                         opt commentsOpt a.comments <>
-                         opt outputOpt (NullOrUndefined $ Just a.output) <>
-                         opt noPrefixOpt a.noPrefix <>
-                         opt requirePathOpt (NullOrUndefined $ Just a.requirePath) <>
-                         opt ffiOpt a.ffi
-
-loaderSrcOption :: Foreign -> Maybe (Array String)
-loaderSrcOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.src) (read query)
-
-loaderFFIOption :: Foreign -> Maybe (Array String)
-loaderFFIOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.ffi) (read query)
+  read obj =
+    Options <$> ({ bundleOutput: _ }
+            <$> (maybe bundleOutputDefault id <<< runNullOrUndefined <$> readProp bundleOutput obj))
+    where
+    bundleOutput :: String
+    bundleOutput = "bundleOutput"
+
+    bundleOutputDefault :: String
+    bundleOutputDefault = joinPath "output" "bundle.js"