diff options
Diffstat (limited to 'protocols/codegen/Main.hs')
| -rw-r--r-- | protocols/codegen/Main.hs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/protocols/codegen/Main.hs b/protocols/codegen/Main.hs index d3230a6..98e9d62 100644 --- a/protocols/codegen/Main.hs +++ b/protocols/codegen/Main.hs @@ -1,2 +1,25 @@ +import System.Environment (getArgs) +import System.Exit (exitFailure) +import System.Directory (listDirectory) +import System.FilePath ((</>), takeExtension) +import Wayland.CodeGen.Types +import Wayland.CodeGen.Parser + main :: IO () -main = putStrLn "Generating code" +main = do + args <- getArgs + case args of + [dir] -> generate dir + _ -> do putStrLn "Usage: highway-protocols-codegen <protocols-dir>" + exitFailure + +generate :: FilePath -> IO () +generate dir = do + let srcDir = dir </> "src" + protocolSpecs <- filter (\p -> takeExtension p == ".xml") . fmap (srcDir </>) <$> listDirectory srcDir + protocols <- mapM readProtocol protocolSpecs + print protocols + pure () + +readProtocol :: FilePath -> IO (Either String Protocol) +readProtocol path = parseProtocolSpec <$> readFile path |
