blob: 8c36c85d5b35c5f36df146be6c960eefaaa973a3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
module Chelleport.Args where
import Chelleport.Types
import Data.Default (Default (def))
parseArgs :: [String] -> Either String Configuration
parseArgs [] = Right def
parseArgs (arg : args)
| arg `elem` ["-h", "--help"] = Right $ def {configShowHelp = True}
| arg `elem` ["-m", "--mode"] = case args of
[] -> Left "Missing value for mode"
(mode : rest) -> parseArgs rest >>= updateMode mode
| otherwise = Left $ "Unrecognized argument: " ++ arg
updateMode :: String -> Configuration -> Either String Configuration
updateMode "hints" cfg = Right cfg {configMode = defaultHintsMode}
updateMode "search" cfg = Right cfg {configMode = defaultSearchMode}
updateMode mode _ = Left $ "Invalid mode: " ++ mode
|