on cf47310 help sign in
42 lines 1.1 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 { inputs :: [FilePath]
17 , output :: FilePath
18 }
20showUsage = do putStrLn "Usage: idris-node <ibc-files> [-o <output-file>]"
21 exitWith ExitSuccess
23getOpts :: IO Opts
24getOpts = do xs <- getArgs
25 return $ process (Opts [] "main.js") xs
26 where
27 process opts ("-o":o:xs) = process (opts { output = o }) xs
28 process opts (x:xs) = process (opts { inputs = x:inputs opts }) xs
29 process opts [] = opts
31jsMain :: Opts -> Idris ()
32jsMain opts = do elabPrims
33 loadInputs (inputs opts) Nothing
34 mainProg <- elabMain
35 ir <- compile (Via "node") (output opts) (Just mainProg)
36 runIO $ codegenNode ir
38main :: IO ()
39main = do opts <- getOpts
40 if (null (inputs opts))
41 then showUsage
42 else runMain (jsMain opts)