aboutsummaryrefslogtreecommitdiff
path: root/src/Chelleport/Args.hs
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2024-12-28 13:09:21 +0530
committerAkshay Nair <phenax5@gmail.com>2024-12-28 13:53:44 +0530
commitd6dbe32df6f1a01c95f9293023e2d73872fa39fe (patch)
treed9a9e667eef416c03745a054118f21ed84ad49e9 /src/Chelleport/Args.hs
parent98af698a806e41904368c0114f9d8d9f377d9c09 (diff)
downloadchelleport-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.hs18
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