summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Angermann <moritz.angermann@gmail.com>2018-03-07 13:38:09 +0800
committerMoritz Angermann <moritz.angermann@gmail.com>2018-03-13 12:10:01 +0800
commit6faf0e6650bc9b8217d541be32f01dc2b092ab8e (patch)
tree387ac238bb0f0bec3800af263c7376bd3eda2f05
parenta334af8e31319b0572c0d8d7f89088bc893ae9c4 (diff)
downloadhaskell-6faf0e6650bc9b8217d541be32f01dc2b092ab8e.tar.gz
Adds iserv-slave (via CLI)
-rw-r--r--utils/iserv-slave/cabal.project4
-rw-r--r--utils/iserv-slave/iserv-slave.cabal20
-rw-r--r--utils/iserv-slave/src/Cli.hs30
3 files changed, 54 insertions, 0 deletions
diff --git a/utils/iserv-slave/cabal.project b/utils/iserv-slave/cabal.project
new file mode 100644
index 0000000000..2e6cd12dc9
--- /dev/null
+++ b/utils/iserv-slave/cabal.project
@@ -0,0 +1,4 @@
+packages: . ../../libraries/libiserv
+
+package libiserv
+ flags: +network
diff --git a/utils/iserv-slave/iserv-slave.cabal b/utils/iserv-slave/iserv-slave.cabal
new file mode 100644
index 0000000000..66a2a323f4
--- /dev/null
+++ b/utils/iserv-slave/iserv-slave.cabal
@@ -0,0 +1,20 @@
+Name: iserv-slave
+Version: 8.5
+Copyright: XXX
+License: BSD3
+-- XXX License-File: LICENSE
+Author: XXX
+Maintainer: XXX
+Synopsis: iserv allows GHC to delegate Tempalte Haskell computations
+Description:
+Category: Development
+build-type: Simple
+cabal-version: >=1.10
+
+Executable iserv-slave
+ Default-Language: Haskell2010
+ Main-Is: Cli.hs
+ Hs-Source-Dirs: src
+ Build-Depends:
+ base >= 4 && < 5,
+ libiserv == 8.5
diff --git a/utils/iserv-slave/src/Cli.hs b/utils/iserv-slave/src/Cli.hs
new file mode 100644
index 0000000000..8a3a34f9c4
--- /dev/null
+++ b/utils/iserv-slave/src/Cli.hs
@@ -0,0 +1,30 @@
+module Main where
+
+import System.Environment (getProgName, getArgs)
+import System.Exit (die)
+import Remote.Slave (startSlave')
+
+main :: IO ()
+main = getArgs >>= startSlave
+
+dieWithUsage :: IO a
+dieWithUsage = do
+ prog <- getProgName
+ die $ prog ++ ": " ++ msg
+ where
+ msg = "usage: iserv-slave /path/to/storage PORT [-v]"
+
+startSlave :: [String] -> IO ()
+startSlave args0
+ | "--help" `elem` args0 = dieWithUsage
+ | otherwise = do
+ (path, port, rest) <- case args0 of
+ arg0:arg1:rest -> return (arg0, read arg1, rest)
+ _ -> dieWithUsage
+ verbose <- case rest of
+ ["-v"] -> return True
+ [] -> return False
+ _ -> dieWithUsage
+
+ startSlave' verbose path port
+