packages feed

yesod-dsl-0.1.1.7: main.hs

import Lexer
import Parser
import System.Environment
import System.Console.GetOpt
import ModuleMerger
import Validation
import ClassImplementer
import AST
import Data.List
import Data.Maybe
import Generator
import System.Directory
import Control.Monad
import System.IO

data Flag = Input FilePath 

options :: [OptDescr Flag]
options = [
  ]

header = "Usage: yesod-dsl FILE"
main = do
    args <- getArgs
    case getOpt RequireOrder options args of
        (_,     (path:_), [])     -> main' path
        (_,     _,       msgs)   -> error $ concat msgs ++ usageInfo header options


    where
                         
        main' path = do
            dbs <- parse path
            let ast  = implementClasses . mergeModules $ dbs
            let errors = validate ast
            if null errors 
                then generate path $ ast 
                else hPutStrLn stderr errors