blob: 98e9d625dda6161a26e2dda10b9d9368f8b58043 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 = 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
|