packages feed

disco-0.1.0.0: example/TestExamples.hs

module Main where

import           System.Directory
import           System.Exit
import           System.FilePath
import           System.Process

import           Control.Monad

exampleDirs :: [FilePath]
exampleDirs = ["example", "docs/tutorial/example", "lib"]

main :: IO ()
main = mapM_ checkDir exampleDirs

checkDir :: FilePath -> IO ()
checkDir dir = do
  examples <- filter ((== ".disco") . takeExtension) <$> getDirectoryContents dir
  res <- and <$> mapM (checkExample . (dir </>)) examples
  when (not res) $ exitFailure

checkExample :: FilePath -> IO Bool
checkExample exampleFile = do
  ex <- system ("disco --check " ++ exampleFile)
  return (ex == ExitSuccess)