From ea6a270a481ae9c5ce6d3d2508c61734b8fd137d Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 8 Aug 2024 23:59:07 +0200 Subject: parse protocol spec --- protocols/codegen/Main.hs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'protocols/codegen/Main.hs') 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 " + 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 -- cgit v1.3.1