module Main where import System.Environment (getArgs) import Text.PrettyPrint.HughesPJClass import Language.GLSL import Language.GLSL.Tests (parsePrettyId, tests) info :: [String] info = [ "This is glsl-pprint." ] usage :: [String] usage = info ++ ["usage:\n glsl-pprint [-p] filename\n glsl-pprint --run-tests"] main :: IO () main = do args <- getArgs case args of ["--run-tests"] -> tests [fn] -> do content <- readFile fn putStrLn . show . parse $ content ["--check", fn] -> do content <- readFile fn case parse content of Left err -> putStrLn $ "parse error:\n" ++ show err Right ast -> if parsePrettyId ast then putStrLn "parse . pretty == id" else putStrLn "parse . pretty /= id" ["-p", fn] -> do content <- readFile fn case parse content of Left err -> putStrLn $ "parse error:\n" ++ show err Right ast -> print . pPrint $ ast _ -> putStrLn $ unlines usage