]> git.immae.eu Git - github/fretlink/purs-loader.git/blob - src/PursLoader/Options.purs
Splitting PSC functionality into a separate plugin
[github/fretlink/purs-loader.git] / src / PursLoader / Options.purs
1 module PursLoader.Options
2 ( Options()
3 , runOptions
4 ) where
5
6 import Prelude ((<$>), (<<<), id)
7
8 import Data.Foreign.Class (IsForeign, readProp)
9 import Data.Foreign.NullOrUndefined (runNullOrUndefined)
10 import Data.Maybe (maybe)
11
12 import PursLoader.Path (joinPath)
13
14 newtype Options = Options { pscBundle :: String }
15
16 type Options_ = { pscBundle :: String }
17
18 runOptions :: Options -> Options_
19 runOptions (Options options) = options
20
21 instance isForeignOptions :: IsForeign Options where
22 read obj =
23 Options <$> ({ pscBundle: _ }
24 <$> (maybe pscBundleDefault id <<< runNullOrUndefined <$> readProp pscBundle obj))
25 where
26 pscBundle :: String
27 pscBundle = "pscBundle"
28
29 pscBundleDefault :: String
30 pscBundleDefault = joinPath "output" "bundle.js"