/
Main.hs
42 lines (32 loc) · 934 Bytes
/
Main.hs
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
module Main where
import qualified RuleGenerator
import qualified TSGenerator
import OptionParser (getOptions, Options(..))
import System.IO
( IO(..)
, readFile
, writeFile
, hPutStrLn
, stderr
, stdin
)
import System.Exit (exitWith, ExitCode(..))
import Data.List (intercalate)
import Data.Char (isSpace)
out output (Left e) = hPutStrLn stderr e
out output (Right v) = output v
generate lang
| lang == "typescript" = TSGenerator.generate
| lang == "ts" = TSGenerator.generate
| lang == "rules" = RuleGenerator.generate True
| otherwise = const . Left $
"Specified language \""++lang++"\"not recognized."
main :: IO ()
main = do
(opts, actions, nonOptions, errors) <- getOptions
let Options { optInput = input
, optOutput = output
, optVerbose = verbose
, optLang = lang
} = opts
input >>= (return . generate lang) >>= out output