aboutsummaryrefslogtreecommitdiffstats
path: root/app/Main.hs
blob: a676a183b67466fbe8f2b58c50ca418b8e4f2778 (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
module Main (main) where
import System.Environment
import Control.Monad

import Lib

data Config = Config {
    configScriptFileName :: Maybe String,
    configVerboseMode :: Bool,
    configShowHelp :: Bool
}

parseArgs :: Config -> [String] -> Config
parseArgs config args =
    case args of
        ("-i":fileName:rest) -> parseArgs
            config { configScriptFileName = Just fileName } rest
        ("-v":rest) -> parseArgs
            config { configVerboseMode = True } rest
        ("-h":rest) -> parseArgs
            config { configShowHelp = True } rest
        _ -> config

main :: IO ()
main = do
    args <- getArgs
    let initialConfig = Config {
        configScriptFileName = Nothing,
        configVerboseMode = False,
        configShowHelp = False
    }

    let config = parseArgs initialConfig args

    when (configVerboseMode config) $ do
        putStrLn $ "configScriptFileName:\t" ++ (show $ configScriptFileName config)
        putStrLn $ "configVerboseMode:\t" ++ (show $ configVerboseMode config)

    when (configShowHelp config) $ do
        error "TODO help"

    case (configScriptFileName config) of
        Just scriptFileName -> runScriptFile scriptFileName
        Nothing -> error "TODO REPL"

    return ()