You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.0 KiB
40 lines
1.0 KiB
-- pilfered from lens package |
|
|
|
module Main(main) where |
|
|
|
import Build_doctest (deps) |
|
|
|
import Control.Applicative |
|
import Control.Monad |
|
import Data.List |
|
import System.Directory |
|
import System.FilePath |
|
import Test.DocTest |
|
|
|
main :: IO () |
|
main = doctest $ |
|
"-isource" |
|
: "-itests" |
|
: "-idist/build/autogen" |
|
: "-hide-all-packages" |
|
: "-XQuasiQuotes" |
|
: "-XOverloadedStrings" |
|
: "-DWITH_TEMPLATE_HASKELL" |
|
: "-optP-includedist/build/autogen/cabal_macros.h" |
|
: map ("-package="++) deps |
|
++ sources |
|
|
|
sources :: [String] |
|
sources = ["Network.Xmpp.Types"] -- ["source/Network/Xmpp/Types.hs"] |
|
|
|
getSources :: IO [FilePath] |
|
getSources = filter (isSuffixOf ".hs") <$> go "source" |
|
where |
|
go dir = do |
|
(dirs, files) <- getFilesAndDirectories dir |
|
(files ++) . concat <$> mapM go dirs |
|
|
|
getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath]) |
|
getFilesAndDirectories dir = do |
|
c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir |
|
(,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c
|
|
|