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 = 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