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