Lastik 0.6.4 → 0.7.0
raw patch · 9 files changed
+43/−427 lines, 9 filesdep +filemanipdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: filemanip
Dependency ranges changed: base
API changes (from Hackage documentation)
- System.Build.Args: instance ArgShow [Char]
- System.Build.FilePather: (&&?) :: (Applicative f) => f Bool -> f Bool -> f Bool
- System.Build.FilePather: (/=&&) :: (Eq a, Functor f, Foldable t) => f a -> t a -> f Bool
- System.Build.FilePather: (/==>) :: (Applicative f1, Applicative f2) => f1 (f2 Bool) -> f1 (f2 Bool) -> f1 (f2 Bool)
- System.Build.FilePather: (/=>) :: (Applicative f) => f Bool -> f Bool -> f Bool
- System.Build.FilePather: (/=?) :: (Eq a, Functor f) => f a -> a -> f Bool
- System.Build.FilePather: (/=||) :: (Eq a, Functor f, Foldable t) => f a -> t a -> f Bool
- System.Build.FilePather: (<?>) :: FilePather a -> FilePath -> a
- System.Build.FilePather: (==&&) :: (Eq a, Functor f, Foldable t) => f a -> t a -> f Bool
- System.Build.FilePather: (===>) :: (Applicative f1, Applicative f2) => f1 (f2 Bool) -> f1 (f2 Bool) -> f1 (f2 Bool)
- System.Build.FilePather: (==>) :: (Applicative f) => f Bool -> f Bool -> f Bool
- System.Build.FilePather: (==?) :: (Eq a, Functor f) => f a -> a -> f Bool
- System.Build.FilePather: (==||) :: (Eq a, Functor f, Foldable t) => f a -> t a -> f Bool
- System.Build.FilePather: (?&&?) :: (Applicative f1, Applicative f2) => f1 (f2 Bool) -> f1 (f2 Bool) -> f1 (f2 Bool)
- System.Build.FilePather: (?||?) :: (Applicative f1, Applicative f2) => f1 (f2 Bool) -> f1 (f2 Bool) -> f1 (f2 Bool)
- System.Build.FilePather: (||?) :: (Applicative f) => f Bool -> f Bool -> f Bool
- System.Build.FilePather: Directory :: FileType
- System.Build.FilePather: File :: FileType
- System.Build.FilePather: Unknown :: FileType
- System.Build.FilePather: always :: FilePather Bool
- System.Build.FilePather: always' :: FilePather (a -> Bool)
- System.Build.FilePather: baseName :: FilePather FilePath
- System.Build.FilePather: baseName' :: FilePather (a -> FilePath)
- System.Build.FilePather: constant :: (Functor f) => f a -> f (t -> a)
- System.Build.FilePather: data FilePather a
- System.Build.FilePather: data FileType
- System.Build.FilePather: directory :: FilePather FilePath
- System.Build.FilePather: directory' :: FilePather (a -> FilePath)
- System.Build.FilePather: extension :: FilePather FilePath
- System.Build.FilePather: extension' :: FilePather (a -> FilePath)
- System.Build.FilePather: fileName :: FilePather FilePath
- System.Build.FilePather: fileName' :: FilePather (a -> FilePath)
- System.Build.FilePather: filePath :: FilePather FilePath
- System.Build.FilePather: filePather :: (FilePath -> a) -> FilePather a
- System.Build.FilePather: find :: RecursePredicate -> FilterPredicate -> FilePath -> IO [FilePath]
- System.Build.FilePather: hasExtension :: FilePather Bool
- System.Build.FilePather: hasExtension' :: FilePather (a -> Bool)
- System.Build.FilePather: hasTrailingPathSeparator :: FilePather Bool
- System.Build.FilePather: hasTrailingPathSeparator' :: FilePather (a -> Bool)
- System.Build.FilePather: instance (Monoid a) => Monoid (FilePather a)
- System.Build.FilePather: instance Applicative FilePather
- System.Build.FilePather: instance Eq FileType
- System.Build.FilePather: instance Functor FilePather
- System.Build.FilePather: instance Monad FilePather
- System.Build.FilePather: instance Show FileType
- System.Build.FilePather: isAbsolute :: FilePather Bool
- System.Build.FilePather: isAbsolute' :: FilePather (a -> Bool)
- System.Build.FilePather: isDirectory :: (Applicative f) => f (FileType -> Bool)
- System.Build.FilePather: isFile :: (Applicative f) => f (FileType -> Bool)
- System.Build.FilePather: isRelative :: FilePather Bool
- System.Build.FilePather: isRelative' :: FilePather (a -> Bool)
- System.Build.FilePather: isUnknown :: (Applicative f) => f (FileType -> Bool)
- System.Build.FilePather: isValid :: FilePather Bool
- System.Build.FilePather: isValid' :: FilePather (a -> Bool)
- System.Build.FilePather: makeValid :: FilePather FilePath
- System.Build.FilePather: makeValid' :: FilePather (a -> FilePath)
- System.Build.FilePather: never :: FilePather Bool
- System.Build.FilePather: never' :: FilePather (a -> Bool)
- System.Build.FilePather: normalise :: FilePather FilePath
- System.Build.FilePather: normalise' :: FilePather (a -> FilePath)
- System.Build.FilePather: not' :: (Functor f) => f Bool -> f Bool
- System.Build.FilePather: splitDirectories :: FilePather [FilePath]
- System.Build.FilePather: splitDirectories' :: FilePather (a -> [FilePath])
- System.Build.FilePather: splitExtension :: FilePather (String, String)
- System.Build.FilePather: splitExtension' :: FilePather (a -> (String, String))
- System.Build.FilePather: type FilterPredicate = FilePather (FileType -> Bool)
- System.Build.FilePather: type RecursePredicate = FilePather Bool
+ System.Build.Args: instance ArgShow String
- System.Build.Args: (-~>) :: (ArgShow k) => String -> Maybe k -> String
+ System.Build.Args: (-~>) :: ArgShow k => String -> Maybe k -> String
- System.Build.Args: (~~>) :: (ArgShow k) => String -> Maybe k -> String
+ System.Build.Args: (~~>) :: ArgShow k => String -> Maybe k -> String
- System.Build.Args: arg :: (ArgShow a) => a -> String
+ System.Build.Args: arg :: ArgShow a => a -> String
- System.Build.Command: command :: (Command c) => c -> IO String
+ System.Build.Command: command :: Command c => c -> IO String
- System.Build.CompilePaths: (=>>) :: (CompilePaths c) => c -> [FilePath] -> String
+ System.Build.CompilePaths: (=>>) :: CompilePaths c => c -> [FilePath] -> String
- System.Build.Directory: archiveDirectories :: [(FilePath, FilePath)] -> RecursePredicate -> FilterPredicate -> [ZipOption] -> IO Archive
+ System.Build.Directory: archiveDirectories :: [(FilePath, FilePath)] -> RecursionPredicate -> FilterPredicate -> [ZipOption] -> IO Archive
- System.Build.Directory: copy :: RecursePredicate -> FilterPredicate -> FilePath -> FilePath -> IO ()
+ System.Build.Directory: copy :: RecursionPredicate -> FilterPredicate -> FilePath -> FilePath -> IO ()
- System.Build.Directory: copyl :: RecursePredicate -> FilterPredicate -> Int -> FilePath -> FilePath -> IO ()
+ System.Build.Directory: copyl :: RecursionPredicate -> FilterPredicate -> Int -> FilePath -> FilePath -> IO ()
- System.Build.Directory: writeArchive :: [(FilePath, FilePath)] -> RecursePredicate -> FilterPredicate -> [ZipOption] -> FilePath -> IO ()
+ System.Build.Directory: writeArchive :: [(FilePath, FilePath)] -> RecursionPredicate -> FilterPredicate -> [ZipOption] -> FilePath -> IO ()
- System.Build.Directory: writeHashArchive :: [(FilePath, FilePath)] -> RecursePredicate -> FilterPredicate -> [ZipOption] -> FilePath -> IO ()
+ System.Build.Directory: writeHashArchive :: [(FilePath, FilePath)] -> RecursionPredicate -> FilterPredicate -> [ZipOption] -> FilePath -> IO ()
- System.Build.Extensions: exts :: (Extensions e) => e -> [String]
+ System.Build.Extensions: exts :: Extensions e => e -> [String]
- System.Build.Extensions: exts' :: (Extensions e) => e -> [String]
+ System.Build.Extensions: exts' :: Extensions e => e -> [String]
- System.Build.OutputDirectory: outdir :: (OutputDirectory o) => o -> Maybe FilePath
+ System.Build.OutputDirectory: outdir :: OutputDirectory o => o -> Maybe FilePath
- System.Build.OutputReferenceGet: getReference :: (OutputReferenceGet r) => r -> [FilePath]
+ System.Build.OutputReferenceGet: getReference :: OutputReferenceGet r => r -> [FilePath]
- System.Build.OutputReferenceSet: setReference :: (OutputReferenceSet r) => [FilePath] -> r -> r
+ System.Build.OutputReferenceSet: setReference :: OutputReferenceSet r => [FilePath] -> r -> r
- System.Build.Runner: (>--) :: (Monad m) => m ExitCode -> m ExitCode -> m ExitCode
+ System.Build.Runner: (>--) :: Monad m => m ExitCode -> m ExitCode -> m ExitCode
- System.Build.Runner: (>==) :: (Monad m) => m ExitCode -> m () -> m ()
+ System.Build.Runner: (>==) :: Monad m => m ExitCode -> m () -> m ()
- System.Build.Runner: pathTransform' :: (Extensions e) => e -> Runner x r -> Runner x r
+ System.Build.Runner: pathTransform' :: Extensions e => e -> Runner x r -> Runner x r
Files
- Lastik.cabal +32/−25
- System/Build.hs +0/−2
- System/Build/Args.hs +2/−3
- System/Build/Directory.hs +6/−6
- System/Build/FilePather.hs +0/−386
- System/Build/Java/Javac.hs +0/−1
- System/Build/Java/Javadoc.hs +0/−1
- System/Build/Runner.hs +3/−2
- System/Build/Scala/Scalac.hs +0/−1
Lastik.cabal view
@@ -1,5 +1,5 @@ Name: Lastik-Version: 0.6.4+Version: 0.7.0 License: BSD3 License-File: LICENSE Author: Tony Morris <code@tmorris.net>@@ -12,31 +12,38 @@ Build-Type: Simple Flag small_base- Description: Choose the new, split-up base package.+ Description: Choose the new, split-up base package. Library- if flag(small_base)- Build-Depends: base < 4 && >= 3, bytestring, directory, filepath, process, zip-archive, pureMD5, SHA, containers- else- Build-Depends: base < 3, filepath, process, zip-archive, pureMD5, SHA, containers+ Build-Depends:+ base < 5 && >= 3,+ bytestring,+ directory,+ filepath,+ process,+ zip-archive,+ pureMD5,+ SHA,+ containers,+ filemanip - GHC-Options: -Wall+ GHC-Options:+ -Wall Exposed-Modules:- System.Build,- System.Build.Directory,- System.Build.FilePather,- System.Build.Args,- System.Build.Runner,- System.Build.Scala.Access,- System.Build.Scala.Debug,- System.Build.Scala.Scalac,- System.Build.Scala.Scaladoc,- System.Build.Scala.Target,- System.Build.Command,- System.Build.CompilePaths,- System.Build.Extensions,- System.Build.OutputDirectory,- System.Build.OutputReferenceGet,- System.Build.OutputReferenceSet,- System.Build.Java.Javac,- System.Build.Java.Javadoc+ System.Build,+ System.Build.Directory,+ System.Build.Args,+ System.Build.Runner,+ System.Build.Scala.Access,+ System.Build.Scala.Debug,+ System.Build.Scala.Scalac,+ System.Build.Scala.Scaladoc,+ System.Build.Scala.Target,+ System.Build.Command,+ System.Build.CompilePaths,+ System.Build.Extensions,+ System.Build.OutputDirectory,+ System.Build.OutputReferenceGet,+ System.Build.OutputReferenceSet,+ System.Build.Java.Javac,+ System.Build.Java.Javadoc
System/Build.hs view
@@ -3,7 +3,6 @@ module System.Build.CompilePaths, module System.Build.Directory, module System.Build.Extensions,- module System.Build.FilePather, module System.Build.OutputDirectory, module System.Build.OutputReferenceGet, module System.Build.OutputReferenceSet,@@ -22,7 +21,6 @@ import System.Build.CompilePaths import System.Build.Directory import System.Build.Extensions-import System.Build.FilePather import System.Build.OutputDirectory import System.Build.OutputReferenceGet import System.Build.OutputReferenceSet
System/Build/Args.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeSynonymInstances #-} -- | Functions for working with command line arguments and options. module System.Build.Args(@@ -20,7 +20,6 @@ ) where import Control.Monad-import Data.Maybe import Data.List import qualified Data.Map as M import System.Environment@@ -29,7 +28,7 @@ class ArgShow a where arg :: a -> String -instance ArgShow [Char] where+instance ArgShow String where arg = id instance ArgShow Int where
System/Build/Directory.hs view
@@ -17,7 +17,7 @@ import System.Directory import System.FilePath-import System.Build.FilePather+import System.FilePath.Find import Codec.Archive.Zip import qualified Data.ByteString.Lazy as B import Control.Monad@@ -42,7 +42,7 @@ rmdir d = doesDirectoryExist d >>= flip when (removeDirectoryRecursive d) -- | Copy the contents of a directory to another, perhaps trimming parent directories.-copy :: RecursePredicate -- ^ The recursion predicate to search for files in the source directory.+copy :: RecursionPredicate -- ^ The recursion predicate to search for files in the source directory. -> FilterPredicate -- ^ The filter predicate to search for files in the source directory. -> FilePath -- ^ The source directory. -> FilePath -- ^ The target directory.@@ -64,7 +64,7 @@ else error (from ++ " is not a directory") -- | Copy the contents of a directory to another, perhaps trimming parent directories.-copyl :: RecursePredicate -- ^ The recursion predicate to search for files in the source directory.+copyl :: RecursionPredicate -- ^ The recursion predicate to search for files in the source directory. -> FilterPredicate -- ^ The filter predicate to search for files in the source directory. -> Int -- ^ The number of parent directories to drop before copying to the target directory. -> FilePath -- ^ The source directory.@@ -77,7 +77,7 @@ -- | Create a zip archive by changing into directories and archiving the contents. archiveDirectories :: [(FilePath, FilePath)] -- ^ A list of base directories to change to and contents of that directory to archive.- -> RecursePredicate -- ^ The recursion predicate to search for files to archive.+ -> RecursionPredicate -- ^ The recursion predicate to search for files to archive. -> FilterPredicate -- ^ The filter predicate to search for files to archive. -> [ZipOption] -- ^ The options during the creation of the archive. -> IO Archive -- ^ The constructed archive.@@ -86,7 +86,7 @@ -- | Writes a zip archive to a file. writeArchive :: [(FilePath, FilePath)] -- ^ A list of base directories to change to and contents of that directory to archive.- -> RecursePredicate -- ^ The recursion predicate to search for files to archive.+ -> RecursionPredicate -- ^ The recursion predicate to search for files to archive. -> FilterPredicate -- ^ The filter predicate to search for files to archive. -> [ZipOption] -- ^ The options during the creation of the archive. -> FilePath -- ^ The file to write the archive to.@@ -96,7 +96,7 @@ -- | Writes a zip archive to a file then computes a MD5 and SHA1 hash and writes them to files with @".md5"@ and @".sha1"@ extensions. writeHashArchive :: [(FilePath, FilePath)] -- ^ A list of base directories to change to and contents of that directory to archive.- -> RecursePredicate -- ^ The recursion predicate to search for files to archive.+ -> RecursionPredicate -- ^ The recursion predicate to search for files to archive. -> FilterPredicate -- ^ The filter predicate to search for files to archive. -> [ZipOption] -- ^ The options during the creation of the archive. -> FilePath -- ^ The file to write the archive to and the prefix name of the files containing the hashes.
− System/Build/FilePather.hs
@@ -1,386 +0,0 @@--- | Combinators for finding files recursively. The combinators all surround the 'find' function.-module System.Build.FilePather(- FilePather,- -- * Constructor and unwrapper- (<?>),- filePather,- -- * Values using 'System.FilePath'- filePath,- always,- always',- never,- never',- extension,- extension',- directory,- directory',- hasExtension,- hasExtension',- splitExtension,- splitExtension',- splitDirectories,- splitDirectories',- hasTrailingPathSeparator,- hasTrailingPathSeparator',- fileName,- fileName',- baseName,- baseName',- normalise,- normalise',- makeValid,- makeValid',- isRelative,- isRelative',- isAbsolute,- isAbsolute',- isValid,- isValid',- -- * Utility- not',- constant,- (==?),- (/=?),- (==||),- (/=||),- (==&&),- (/=&&),- (==>),- (===>),- (/=>),- (/==>),- (&&?),- (?&&?),- (||?),- (?||?),- -- * Find predicates- FileType(..),- RecursePredicate,- FilterPredicate,- isFile,- isDirectory,- isUnknown,- -- * Core function- find,- ) where--import Prelude hiding (any, all)-import Control.Applicative-import Control.Monad-import Control.Monad.Instances-import Data.Monoid-import Data.Foldable(any, all, Foldable)-import System.FilePath((</>), takeExtension, takeDirectory, takeFileName, takeBaseName)-import System.Directory-import qualified System.FilePath as P---- | A function that takes a 'FilePath' and produces a value.-newtype FilePather a = FilePather {- (<?>) :: FilePath -> a-}--instance Functor FilePather where- fmap f (FilePather k) = FilePather (f . k)--instance Applicative FilePather where- FilePather f <*> FilePather a = FilePather (f <*> a)- pure = FilePather . const--instance Monad FilePather where- FilePather f >>= k = FilePather (f >>= (<?>) . k)- return = pure--instance (Monoid a) => Monoid (FilePather a) where- mempty = return mempty- FilePather x `mappend` FilePather y = FilePather (x `mappend` y)---- | Construct a 'FilePather' from the given function-filePather :: (FilePath -> a) ->- FilePather a-filePather = FilePather---- | A value that runs the identity function.-filePath :: FilePather FilePath-filePath = filePather id---- | A value that always produces the value 'True'.-always :: FilePather Bool-always = filePather (const True)---- | A value using a constant function that produces the value 'True'.-always' :: FilePather (a -> Bool)-always' = constant always---- | A value that always produces the value 'False'.-never :: FilePather Bool-never = filePather (const False)---- | A value that always produces a constant function that produces the value 'False'.-never' :: FilePather (a -> Bool)-never' = constant never---- | A value that produces the extension of the given 'FilePath'.-extension :: FilePather FilePath-extension = filePather takeExtension---- | A value using a constant function that produces the extension of the given 'FilePath'.-extension' :: FilePather (a -> FilePath)-extension' = constant extension---- | A value that produces the directory of the given 'FilePath'.-directory :: FilePather FilePath-directory = filePather takeDirectory---- | A value using a constant function that produces the directory of the given 'FilePath'.-directory' :: FilePather (a -> FilePath)-directory' = constant directory---- | A value that produces a value denoting whether or not the given 'FilePath' has an extension.-hasExtension :: FilePather Bool-hasExtension = filePather P.hasExtension---- | A value using a constant function that produces a value denoting whether or not the given 'FilePath' has an extension.-hasExtension' :: FilePather (a -> Bool)-hasExtension' = constant hasExtension---- | A value that produces a value splitting the given 'FilePath' by its extension.-splitExtension :: FilePather (String, String)-splitExtension = filePather P.splitExtension---- | A value using a constant function that produces a value splitting the given 'FilePath' by its extension.-splitExtension' :: FilePather (a -> (String, String))-splitExtension' = constant splitExtension---- | A value that produces a value splitting the given 'FilePath' into its directories.-splitDirectories :: FilePather [FilePath]-splitDirectories = filePather P.splitDirectories---- | A value using a constant function that produces a value splitting the given 'FilePath' into its directories.-splitDirectories' :: FilePather (a -> [FilePath])-splitDirectories' = constant splitDirectories---- | A value that produces a value denoting whether or not the given 'FilePath' has a trailing path separator.-hasTrailingPathSeparator :: FilePather Bool-hasTrailingPathSeparator = filePather P.hasTrailingPathSeparator---- | A value using a constant function that produces a value denoting whether or not the given 'FilePath' has a trailing path separator.-hasTrailingPathSeparator' :: FilePather (a -> Bool)-hasTrailingPathSeparator' = constant hasTrailingPathSeparator---- | A value that produces the file name of the given 'FilePath'.-fileName :: FilePather FilePath-fileName = filePather takeFileName---- | A value using a constant function that produces the file name of the given 'FilePath'.-fileName' :: FilePather (a -> FilePath)-fileName' = constant fileName---- | A value that produces the base name of the given 'FilePath'.-baseName :: FilePather FilePath-baseName = filePather takeBaseName---- | A value using a constant function that produces the base name of the given 'FilePath'.-baseName' :: FilePather (a -> FilePath)-baseName' = constant baseName---- | A value that normalises the given 'FilePath'.-normalise :: FilePather FilePath-normalise = filePather P.normalise---- | A value using a constant function that normalises the given 'FilePath'.-normalise' :: FilePather (a -> FilePath)-normalise' = constant normalise---- | A value that makes valid the given 'FilePath'.-makeValid :: FilePather FilePath-makeValid = filePather P.makeValid---- | A value using a constant function that makes valid the given 'FilePath'.-makeValid' :: FilePather (a -> FilePath)-makeValid' = constant makeValid---- | A value that produces a value denoting whether or not the given 'FilePath' has is relative.-isRelative :: FilePather Bool-isRelative = filePather P.isRelative---- | A value using a constant function that produces a value denoting whether or not the given 'FilePath' has is relative.-isRelative' :: FilePather (a -> Bool)-isRelative' = constant isRelative---- | A value that produces a value denoting whether or not the given 'FilePath' has is absolute.-isAbsolute :: FilePather Bool-isAbsolute = filePather P.isAbsolute---- | A value using a constant function that produces a value denoting whether or not the given 'FilePath' has is absolute.-isAbsolute' :: FilePather (a -> Bool)-isAbsolute' = constant isAbsolute---- | A value that produces a value denoting whether or not the given 'FilePath' has is valid.-isValid :: FilePather Bool-isValid = filePather P.isValid---- | A value using a constant function that produces a value denoting whether or not the given 'FilePath' has is valid.-isValid' :: FilePather (a -> Bool)-isValid' = constant isValid---- | Inverts the given 'Bool' in a functor.-not' :: (Functor f) =>- f Bool- -> f Bool-not' = fmap not---- | Produces a constant function in a functor.-constant :: (Functor f) =>- f a ->- f (t -> a)-constant = fmap const---- | Tests for equality in a functor.-(==?) :: (Eq a, Functor f) =>- f a- -> a- -> f Bool-p ==? a = fmap (a ==) p---- | Tests for inequality in a functor.-(/=?) :: (Eq a, Functor f) =>- f a- -> a- -> f Bool-p /=? a = fmap (a /=) p---- | Tests for equality of @any@ values in the given container.-(==||) :: (Eq a, Functor f, Foldable t) =>- f a ->- t a ->- f Bool-p ==|| a = fmap (\x -> any (== x) a) p---- | Tests for inequality of @any@ values in the given container.-(/=||) :: (Eq a, Functor f, Foldable t) =>- f a ->- t a ->- f Bool-p /=|| a = fmap (\x -> any (/= x) a) p---- | Tests for equality of @all@ values in the given container.-(==&&) :: (Eq a, Functor f, Foldable t) =>- f a ->- t a ->- f Bool-p ==&& a = fmap (\x -> all (== x) a) p---- | Tests for inequality of @all@ values in the given container.-(/=&&) :: (Eq a, Functor f, Foldable t) =>- f a ->- t a ->- f Bool-p /=&& a = fmap (\x -> all (/= x) a) p---- | Tests for implication in an applicative functor.-(==>) :: (Applicative f) =>- f Bool- -> f Bool- -> f Bool-(==>) = liftA2 (\p q -> not p || q)---- | Tests for implication in an applicative functor in an applicative functor.-(===>) :: (Applicative f1, Applicative f2) =>- f1 (f2 Bool)- -> f1 (f2 Bool)- -> f1 (f2 Bool)-(===>) = liftA2 (==>)---- | Tests for inverse implication in an applicative functor.-(/=>) :: (Applicative f) =>- f Bool - -> f Bool- -> f Bool-(/=>) = liftA2 (\p q -> not q && p)---- | Tests for inverse implication in an applicative functor in an applicative functor.-(/==>) :: (Applicative f1, Applicative f2) =>- f1 (f2 Bool)- -> f1 (f2 Bool)- -> f1 (f2 Bool)-(/==>) = liftA2 (/=>)---- | Performs conjunction (@AND@) in an applicative functor.-(&&?) :: (Applicative f) =>- f Bool - -> f Bool- -> f Bool-(&&?) = liftA2 (&&)---- | Performs conjunction (@AND@) in an applicative functor in an applicative functor.-(?&&?) :: (Applicative f1, Applicative f2) =>- f1 (f2 Bool)- -> f1 (f2 Bool)- -> f1 (f2 Bool)-(?&&?) = liftA2 (&&?)---- | Performs disjunction (@OR@) in an applicative functor.-(||?) :: (Applicative f) =>- f Bool- -> f Bool- -> f Bool-(||?) = liftA2 (||)---- | Performs disjunction (@OR@) in an applicative functor in an applicative functor.-(?||?) :: (Applicative f1, Applicative f2) =>- f1 (f2 Bool)- -> f1 (f2 Bool)- -> f1 (f2 Bool)-(?||?) = liftA2 (||?)---- | The possible types of a file.-data FileType = File -- ^ The type is a normal file.- | Directory -- ^ The type is a directory.- | Unknown -- ^ The type is unknown.- deriving (Eq, Show)---- | A recurse predicate takes a 'FilePath' and returns whether or not to continue recursing on that file.-type RecursePredicate = FilePather Bool---- | A filter predicate takes a 'FilePath' and a file type and returns whether or not to filter the value.-type FilterPredicate = FilePather (FileType -> Bool)---- | Compares for equivalence to a 'File' in an applicative functor.-isFile :: (Applicative f) => - f (FileType -> Bool)-isFile = pure (== File)---- | Compares for equivalence to a 'Directory' in an applicative functor.-isDirectory :: (Applicative f) =>- f (FileType -> Bool)-isDirectory = pure (== Directory)---- | Compares for equivalence to 'Unknown' in an applicative functor.-isUnknown :: (Applicative f) => - f (FileType -> Bool)-isUnknown = pure (== Unknown)---- | Finds all files using the given recurse predicate and filter predicate in the given file path.-find :: RecursePredicate -- ^ The recurse predicate determines whether to continue recursing on the given file path.- -> FilterPredicate -- ^ The filter predicate determines whether to keep the current file path.- -> FilePath -- ^ The file path to begin finding files.- -> IO [FilePath] -- ^ All files found.-find = find' []- where- find' :: FilePath -> RecursePredicate -> FilterPredicate -> FilePath -> IO [FilePath]- find' k r x p = let z = if null k then p else k </> p- z' t = [z | x <?> z $ t]- ifM c t f = do c' <- c- t' <- t- f' <- f- return (if c' then t' else f')- in ifM (doesFileExist z)- (return (z' File)) $- do e <- doesDirectoryExist z- if e- then if r <?> z- then do c <- getDirectoryContents z- t <- fmap join $ forM (filter (`notElem` [".", ".."]) c) (find' k r x . (z </>))- return (z' Directory ++ t)- else return (z' Directory)- else return (z' Unknown)
System/Build/Java/Javac.hs view
@@ -43,7 +43,6 @@ import Data.List import Data.Maybe import Control.Arrow-import Control.Monad import System.FilePath import System.Build.CompilePaths import System.Build.Extensions
System/Build/Java/Javadoc.hs view
@@ -69,7 +69,6 @@ import Data.List hiding (group) import Data.Maybe-import Control.Monad import System.FilePath import System.Build.Args import System.Build.CompilePaths
System/Build/Runner.hs view
@@ -25,7 +25,7 @@ import System.Cmd import System.Directory import System.Exit-import System.Build.FilePather+import System.FilePath.Find import System.Build.Extensions import System.Build.Command import System.Build.CompilePaths@@ -72,7 +72,8 @@ Runner x r pathTransform' = pathTransform . recurse where- recurse c p = fmap concat $ find always (constant $ extension ==|| exts' c) `mapM` p+ p ==|| a = fmap (\x -> any (== x) a) p+ recurse c p = fmap concat $ find always (extension ==|| exts' c) `mapM` p (!!!) :: (Command c, CompilePaths c) => RunnerExit c
System/Build/Scala/Scalac.hs view
@@ -47,7 +47,6 @@ import System.Build.OutputReferenceSet import System.Build.OutputReferenceGet import System.Build.Command-import Control.Monad import Data.List import Data.Maybe import System.FilePath