packages feed

yesod-dsl-0.1.1.20: main/main.hs

import YesodDsl.Lexer
import YesodDsl.Parser
import System.Environment
import System.Console.GetOpt
import YesodDsl.ModuleMerger
import YesodDsl.ClassImplementer
import YesodDsl.Generator
import Control.Monad
import System.IO
import YesodDsl.ExpandMacros

data Flag = 
          FayPath String deriving Eq
options :: [OptDescr Flag]
options = [
    Option ['f']     ["fay"] (ReqArg FayPath "FILE") "translate DSL definition to Fay compatible code and store it in FILE"
  ]

header :: String

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


    where
                         
        main' o path = do
            mast <- parse path
            case mast of
                Just ast -> do
                    generate path $ ast 
                    forM_ o (processFlag ast)
                Nothing -> return ()
        processFlag ast (FayPath path) = genFay path ast
            
        processFlag _ _ = return ()