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