on 62f8aae help sign in
44 lines 1.3 kB history raw
1module Main where
3import Idris.AbsSyntax
4import Idris.Core.TT
5import Idris.ElabDecls
6import Idris.Main
7import IRTS.CodegenJavaScript
8import IRTS.Compiler
10import Paths_idris
12import System.Environment
13import System.Exit
16data Opts = Opts {
17 inputs :: [FilePath]
18 , output :: FilePath
19 }
21showUsage = do putStrLn "A code generator which is intended to be called by the compiler, not by a user."
22 putStrLn "Usage: idris-codegen-javascript <ibc-files> [-o <output-file>]"
23 exitWith ExitSuccess
25getOpts :: IO Opts
26getOpts = do xs <- getArgs
27 return $ process (Opts [] "main.js") xs
28 where
29 process opts ("-o":o:xs) = process (opts { output = o }) xs
30 process opts (x:xs) = process (opts { inputs = x:inputs opts }) xs
31 process opts [] = opts
33jsMain :: Opts -> Idris ()
34jsMain opts = do elabPrims
35 loadInputs (inputs opts) Nothing
36 mainProg <- elabMain
37 ir <- compile (Via IBCFormat "javascript") (output opts) (Just mainProg)
38 runIO $ codegenJavaScript ir
40main :: IO ()
41main = do opts <- getOpts
42 if (null (inputs opts))
43 then showUsage
44 else runMain (jsMain opts)