summaryrefslogtreecommitdiff
path: root/utils/remote-iserv/src/Cli.hs
blob: 8a3a34f9c4c0075b0d0d8b278650de6905834790 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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