-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Build system creator -- -- Write build systems, mostly works but seriously early adopters only. @package shake @version 0.1 -- | Module for FilePath operations, to be used in place of -- System.FilePath. It uses / as the directory separator -- to ensure uniqueness, and squashes any /./ components. module Development.Shake.FilePath -- | Drop the first directory from a FilePath. Should only be used -- on relative paths. -- --
-- dropDirectory1 "aaa/bbb" == "bbb" -- dropDirectory1 "aaa/" == "" -- dropDirectory1 "aaa" == "" -- dropDirectory1 "" == "" --dropDirectory1 :: FilePath -> FilePath -- | Take the first component of a FilePath. Should only be used on -- relative paths. -- --
-- takeDirectory1 "aaa/bbb" == "aaa" -- takeDirectory1 "aaa/" == "aaa" -- takeDirectory1 "aaa" == "aaa" --takeDirectory1 :: FilePath -> FilePath normalise :: FilePath -> FilePath toNative :: FilePath -> FilePath (>) :: FilePath -> FilePath -> FilePath combine :: FilePath -> FilePath -> FilePath -- | Main module for defining Shake build systems. You may also want to -- include Development.Shake.FilePath. module Development.Shake -- | Main entry point for running Shake build systems. shake :: ShakeOptions -> Rules () -> IO () -- | Options to specify how to control shake. data ShakeOptions ShakeOptions :: FilePath -> Int -> Int -> Int -> ShakeOptions -- | Where shall I store the database and journal files (defaults to -- .) shakeFiles :: ShakeOptions -> FilePath -- | What is the maximum number of rules I should run in parallel (defaults -- to 1) shakeParallel :: ShakeOptions -> Int -- | What is the version of your build system, increment to force everyone -- to rebuild shakeVersion :: ShakeOptions -> Int -- | 1 = normal, 0 = quiet, 2 = loud shakeVerbosity :: ShakeOptions -> Int -- | A default set of ShakeOptions. shakeOptions :: ShakeOptions -- | This function is not actually exported, but Haddock is buggy. Please -- ignore. run :: ShakeOptions -> Rules () -> IO () -- | Define a pair of types that can be used as a Shake rule. class (Show key, Typeable key, Eq key, Hashable key, Binary key, Show value, Typeable value, Eq value, Hashable value, Binary value) => Rule key value | key -> value validStored :: Rule key value => key -> value -> IO Bool -- | Define a set of rules. Rules can be created with calls to -- 'rule'/'action'. Rules are combined with either the Monoid -- instance, or more commonly using the Monad instance and -- do notation. data Rules a -- | Like rule, but lower priority, if no rule exists then -- defaultRule is checked. defaultRule :: Rule key value => (key -> Maybe (Action value)) -> Rules () -- | Add a rule to build a key, returning an appropriate Action. All -- rules must be disjoint. To define lower priority rules use -- defaultRule. rule :: Rule key value => (key -> Maybe (Action value)) -> Rules () -- | Run an action, usually used for specifying top-level requirements. action :: Action a -> Rules () -- | The Action monad, use liftIO to raise IO actions -- into it, and need to execute files. Action values are used by -- rule and action. data Action a -- | Execute a rule, returning the associated values. If possible, the -- rules will be run in parallel. This function requires that appropriate -- rules have been added with 'rule'/'defaultRule'. apply :: Rule key value => [key] -> Action [value] -- | Apply a single rule, equivalent to calling apply with a -- singleton list. Where possible, use apply to allow the -- potential for parallelism. apply1 :: Rule key value => key -> Action value -- | Write an action to the trace list, along with the start/end time of -- running the IO action. The system' command automatically -- calls traced. traced :: String -> IO a -> Action a -- | Get the Key for the currently executing rule - usally used to -- improve error messages. Returns Nothing if being run by -- action. currentRule :: Action (Maybe Key) -- | Write a message to the output when the verbosity is appropriate. The -- output will not be interleaved with any other Shake messages (other -- than those generated by system commands). putLoud, putQuiet, putNormal :: String -> Action () system' :: [String] -> Action () copyFile' :: FilePath -> FilePath -> Action () readFile' :: FilePath -> Action String writeFile' :: FilePath -> String -> Action () readFileLines :: FilePath -> Action [String] writeFileLines :: FilePath -> [String] -> Action () type FilePattern = String need :: [FilePath] -> Action () want :: [FilePath] -> Rules () -- | This function is not actually exported, but Haddock is buggy. Please -- ignore. defaultRuleFile :: Rules () (?==) :: FilePattern -> FilePath -> Bool (?>) :: (FilePath -> Bool) -> (FilePath -> Action ()) -> Rules () (**>) :: [FilePattern] -> (FilePath -> Action ()) -> Rules () (*>) :: FilePattern -> (FilePath -> Action ()) -> Rules () doesFileExist :: FilePath -> Action Bool getDirectoryContents :: FilePath -> Action [FilePath] getDirectoryFiles :: FilePath -> FilePattern -> Action [FilePath] getDirectoryDirs :: FilePath -> Action [FilePath] -- | This function is not actually exported, but Haddock is buggy. Please -- ignore. defaultRuleDirectory :: Rules ()