on 65125ae help sign in
44 lines 1.3 kB history raw
1module Main where
3import Idris.Core.TT
4import Idris.AbsSyntax
5import Idris.ElabDecls
6import Idris.REPL
8import IRTS.Compiler
9import IRTS.CodegenJavaScript
11import System.Environment
12import System.Exit
14import Paths_idris
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 "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)