on develop help sign in
jsaddle-warp support for `run` and friends

The flag `use-warp` controls this. Because it is enabled by default, the user would see a warp server in place of webkit/gtk frontend when compiling the frontend in GHC. Port number for the warp server is determined from the environment variable `JSADDLE_WARP_PORT`, with a default value of 3003. The port number will be printed to stdout by `run` so that user would know where they can access the app.

commitc38b2d556a79eb4fcd1e2960c8e6e53745f16db2 authorSridhar Ratnakumar <srid@srid.ca> dateWed 31 Jan 2018, 15:38 (9 years ago) parent51d6248
3 files changed+28−5
reflex-dom/default.nix+3−1 reflex-dom/reflex-dom.cabal+13−4 reflex-dom/src/Reflex/Dom/Internal.hs+12
reflex-dom/default.nix+3−1
@@ -1,4 +1,4 @@
1−{ mkDerivation, base, bytestring, jsaddle-webkit2gtk, jsaddle-wkwebview, reflex
1+{ mkDerivation, base, bytestring, jsaddle-webkit2gtk, jsaddle-wkwebview, jsaddle-warp, reflex
22, reflex-dom-core, stdenv, text, ghc, hostPlatform, jsaddle-clib, android-activity ? null
33}:
44let isAndroid = hostPlatform.libc == "bionic";
@@ -11,11 +11,13 @@ in mkDerivation {
1111 ] ++ (if ghc.isGhcjs or false then [
1212 ] else if hostPlatform.isDarwin then [
1313 jsaddle-wkwebview
14+ jsaddle-warp
1415 ] else if isAndroid then [
1516 jsaddle-clib
1617 android-activity
1718 ] else [
1819 jsaddle-webkit2gtk
20+ jsaddle-warp
1921 ]);
2022 configureFlags = if isAndroid then [ "-fandroid" ] else [];
2123 description = "Functional Reactive Web Apps with Reflex";
reflex-dom/reflex-dom.cabal+13−4
@@ -17,6 +17,10 @@ extra-source-files: src/Reflex/Dom/Xhr/Foreign.hs
1717 src/Reflex/Dom/Xhr/Exception.hs
1818 java/org/reflexfrp/reflexdom/MainWidget.java
1919
20+flag use-warp
21+ description: Use jsaddle-warp server
22+ default: True
23+
2024flag webkit2gtk
2125 description: Use WebKit2 version of WebKitGTK.
2226 default: True
@@ -68,13 +72,18 @@ library
6872 jsaddle,
6973 jsaddle-wkwebview
7074 else
71− if flag(webkit2gtk)
75+ if flag(use-warp)
7276 build-depends:
73− jsaddle-webkit2gtk
77+ jsaddle,
78+ jsaddle-warp
7479 else
75− if !flag(android)
80+ if flag(webkit2gtk)
7681 build-depends:
77− jsaddle-webkitgtk
82+ jsaddle-webkit2gtk
83+ else
84+ if !flag(android)
85+ build-depends:
86+ jsaddle-webkit2gtk
7887
7988 exposed-modules:
8089 Reflex.Dom
reflex-dom/src/Reflex/Dom/Internal.hs+12
@@ -20,6 +20,18 @@ import qualified Reflex.Dom.Main as Main
2020#if defined(ghcjs_HOST_OS)
2121run :: a -> a
2222run = id
23+#elif defined(MIN_VERSION_jsaddle_warp)
24+import Data.Maybe (maybe)
25+import Data.Monoid ((<>))
26+import Language.Javascript.JSaddle (JSM)
27+import qualified Language.Javascript.JSaddle.Warp as JW
28+import System.Environment (lookupEnv)
29+
30+run :: JSM () -> IO()
31+run jsm = do
32+ port <- maybe 3003 read <$> lookupEnv "JSADDLE_WARP_PORT"
33+ putStrLn $ "Running jsaddle-warp server on port " <> show port
34+ JW.run port jsm
2335#elif defined(MIN_VERSION_jsaddle_wkwebview)
2436import Language.Javascript.JSaddle.WKWebView (runFile)
2537import Language.Javascript.JSaddle (JSM)