diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-12-28 13:09:21 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-12-28 13:53:44 +0530 |
| commit | d6dbe32df6f1a01c95f9293023e2d73872fa39fe (patch) | |
| tree | d9a9e667eef416c03745a054118f21ed84ad49e9 /src/Chelleport/Args.hs | |
| parent | 98af698a806e41904368c0114f9d8d9f377d9c09 (diff) | |
| download | chelleport-d6dbe32df6f1a01c95f9293023e2d73872fa39fe.tar.gz chelleport-d6dbe32df6f1a01c95f9293023e2d73872fa39fe.zip | |
Add cli arg parsing for starting in given mode
Diffstat (limited to 'src/Chelleport/Args.hs')
| -rw-r--r-- | src/Chelleport/Args.hs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Chelleport/Args.hs b/src/Chelleport/Args.hs new file mode 100644 index 0000000..8c36c85 --- /dev/null +++ b/src/Chelleport/Args.hs @@ -0,0 +1,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 |
