-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Re-export of Shake using well-typed paths and ReaderT. -- -- Re-export of Shake using well-typed paths and ReaderT. You can thread -- logging through your Shake Actions, and better keep track of source -- and output folders using the Within type. @package shake-plus @version 0.2.0.0 -- | License : MIT Stability : experimental -- -- Core definitions of shake-plus. module Development.Shake.Plus.Core -- | Monads in which Actions may be embedded. class MonadIO m => MonadAction m liftAction :: MonadAction m => Action a -> m a class Monad m => MonadRules m liftRules :: MonadRules m => Rules a -> m a newtype UnliftAction m UnliftAction :: (forall a. m a -> Action a) -> UnliftAction m [unliftAction] :: UnliftAction m -> forall a. m a -> Action a -- | Monads which allow their actions to be run in Action. -- -- For the same reasons as MonadUnliftIO this is limited to -- ReaderT and IdentityT transformers on top of -- Action. class MonadAction m => MonadUnliftAction m withRunInAction :: MonadUnliftAction m => ((forall a. m a -> Action a) -> Action b) -> m b withUnliftAction :: MonadUnliftAction m => (UnliftAction m -> Action a) -> m a askUnliftAction :: MonadUnliftAction m => m (UnliftAction m) toAction :: MonadUnliftAction m => m a -> m (Action a) -- | Concrete Action runner, hardcoded to `ReaderT r Action a`. data RAction r a -- | Concrete Rules collector, hardcoded to `ReaderT r Rules a`. data ShakePlus r a -- | Run an RAction with an environment, consuming it for a result. runRAction :: MonadAction m => env -> RAction env a -> m a -- | Run a ShakePlus with an environment, consuming it for some -- Shake Rules. runShakePlus :: MonadRules m => env -> ShakePlus env a -> m a -- | Run a ShakePlus with just a LogFunc in the environment -- that logs to stderr. runSimpleShakePlus :: MonadIO m => ShakePlus LogFunc a -> m () -- | Unlifted parallel. parallel :: MonadUnliftAction m => [m a] -> m [a] -- | Unlifted forP. forP :: MonadUnliftAction m => [a] -> (a -> m b) -> m [b] -- | Unlifted par. par :: MonadUnliftAction m => m a -> m b -> m (a, b) -- | The Action monad, use liftIO to raise IO actions -- into it, and need to execute files. Action values are used by -- addUserRule and action. The Action monad -- tracks the dependencies of a rule. To raise an exception call -- error, MonadFail or liftIO . -- throwIO. data Action a -- | Define a set of rules. Rules can be created with calls to functions -- such as %> or action. Rules are combined with either -- the Monoid instance, or (more commonly) the Monad -- instance and do notation. To define your own custom types of -- rule, see Development.Shake.Rule. data Rules a -- | A type synonym for file patterns, containing // and -- *. For the syntax and semantics of FilePattern see -- ?==. -- -- Most normaliseExd FilePath values are suitable as -- FilePattern values which match only that specific file. On -- Windows \ is treated as equivalent to /. -- -- You can write FilePattern values as a literal string, or build -- them up using the operators <.>, </> and -- <//>. However, beware that: -- --
-- main = shakeArgs shakeOptions{shakeFiles = "_make", shakeProgress = progressSimple} $ do
-- phony "clean" $ removeFilesAfter "_make" ["//*"]
-- want ["_make/neil.txt","_make/emily.txt"]
-- "_make/*.txt" %> \out ->
-- ... build action here ...
--
--
-- This build system will default to building neil.txt and
-- emily.txt, while showing progress messages, and putting the
-- Shake files in locations such as _make/.database. Some
-- example command line flags:
--
--
-- cmd_ "git log --pretty=" "oneline" -- git log --pretty= oneline
-- cmd_ "git log --pretty=" ["oneline"] -- git log --pretty= oneline
-- cmd_ "git log" ("--pretty=" ++ "oneline") -- git log --pretty=oneline
-- cmd_ "git log" ("--pretty=" ++ "one line") -- git log --pretty=one line
-- cmd_ "git log" ["--pretty=" ++ "one line"] -- git log "--pretty=one line"
--
--
-- More examples, including return values, see this translation of the
-- examples given for the command function:
--
-- -- cmd_ "gcc -c myfile.c" -- compile a file, throwing an exception on failure -- Exit c <- cmd "gcc -c" [myfile] -- run a command, recording the exit code -- (Exit c, Stderr err) <- cmd "gcc -c myfile.c" -- run a command, recording the exit code and error output -- Stdout out <- cmd "gcc -MM myfile.c" -- run a command, recording the output -- cmd (Cwd "generated") "gcc -c" [myfile] :: Action () -- run a command in a directory -- -- let gccCommand = cmd "gcc -c" :: CmdArgument -- build a sub-command. cmd can return CmdArgument values as well as execute commands -- cmd (Cwd "generated") gccCommand [myfile] -- splice that command into a greater command ---- -- If you use cmd inside a do block and do not use the -- result, you may get a compile-time error about being unable to deduce -- CmdResult. To avoid this error, use cmd_. If you enable -- OverloadedStrings or OverloadedLists you may have to -- give type signatures to the arguments, or use the more constrained -- command instead. -- -- The cmd function can also be run in the IO monad, but -- then Traced is ignored and command lines are not echoed. As an -- example: -- --
-- cmd (Cwd "generated") Shell "gcc -c myfile.c" :: IO () --cmd :: (Partial, CmdArguments args) => args :-> Action r -- | See cmd. Same as cmd except with a unit result. -- cmd is to cmd_ as command is to command_. cmd_ :: (Partial, CmdArguments args, Unit args) => args :-> Action () -- | The identity function which requires the inner argument to be -- (). Useful for functions with overloaded return types. -- --
-- \(x :: Maybe ()) -> unit x == x --unit :: () => m () -> m () -- | The arguments to cmd - see cmd for examples and -- semantics. newtype CmdArgument CmdArgument :: [Either CmdOption String] -> CmdArgument -- | The arguments to cmd - see cmd for examples and -- semantics. class CmdArguments t -- | Arguments to cmd cmdArguments :: CmdArguments t => CmdArgument -> t -- | Class to convert an a to a CmdArgument class IsCmdArgument a -- | Conversion to a CmdArgument toCmdArgument :: IsCmdArgument a => a -> CmdArgument -- | A type annotation, equivalent to the first argument, but in variable -- argument contexts, gives a clue as to what return type is expected -- (not actually enforced). type (:->) a t = a -- | Collect the stdout of the process. If used, the -- stdout will not be echoed to the terminal, unless you include -- EchoStdout. The value type may be either String, or -- either lazy or strict ByteString. -- -- Note that most programs end their output with a trailing newline, so -- calling ghc --numeric-version will result in Stdout of -- "6.8.3\n". If you want to automatically trim the resulting -- string, see StdoutTrim. newtype Stdout a Stdout :: a -> Stdout a [fromStdout] :: Stdout a -> a -- | Like Stdout but remove all leading and trailing whitespaces. newtype StdoutTrim a StdoutTrim :: a -> StdoutTrim a [fromStdoutTrim] :: StdoutTrim a -> a -- | Collect the stderr of the process. If used, the -- stderr will not be echoed to the terminal, unless you include -- EchoStderr. The value type may be either String, or -- either lazy or strict ByteString. newtype Stderr a Stderr :: a -> Stderr a [fromStderr] :: Stderr a -> a -- | Collect the stdout and stderr of the process. If -- used, the stderr and stdout will not be echoed to -- the terminal, unless you include EchoStdout and -- EchoStderr. The value type may be either String, or -- either lazy or strict ByteString. newtype Stdouterr a Stdouterr :: a -> Stdouterr a [fromStdouterr] :: Stdouterr a -> a -- | Collect the ExitCode of the process. If you do not collect the -- exit code, any ExitFailure will cause an exception. newtype Exit Exit :: ExitCode -> Exit [fromExit] :: Exit -> ExitCode -- | Collect the ProcessHandle of the process. If you do collect the -- process handle, the command will run asyncronously and the call to -- cmd / command will return as soon as the process is -- spawned. Any Stdout / Stderr captures will return empty -- strings. newtype Process Process :: ProcessHandle -> Process [fromProcess] :: Process -> ProcessHandle -- | Collect the time taken to execute the process. Can be used in -- conjunction with CmdLine to write helper functions that print -- out the time of a result. -- --
-- timer :: (CmdResult r, MonadIO m) => (forall r . CmdResult r => m r) -> m r -- timer act = do -- (CmdTime t, CmdLine x, r) <- act -- liftIO $ putStrLn $ "Command " ++ x ++ " took " ++ show t ++ " seconds" -- pure r -- -- run :: IO () -- run = timer $ cmd "ghc --version" --newtype CmdTime CmdTime :: Double -> CmdTime [fromCmdTime] :: CmdTime -> Double -- | Collect the command line used for the process. This command line will -- be approximate - suitable for user diagnostics, but not for direct -- execution. newtype CmdLine CmdLine :: String -> CmdLine [fromCmdLine] :: CmdLine -> String -- | The results produced by fsatrace. All files will be absolute -- paths. You can get the results for a cmd by requesting a value -- of type [FSATrace]. data FSATrace a -- | Writing to a file FSAWrite :: a -> FSATrace a -- | Reading from a file FSARead :: a -> FSATrace a -- | Deleting a file FSADelete :: a -> FSATrace a -- | Moving, arguments destination, then source FSAMove :: a -> a -> FSATrace a -- | Querying/stat on a file FSAQuery :: a -> FSATrace a -- | Touching a file FSATouch :: a -> FSATrace a -- | A class for specifying what results you want to collect from a -- process. Values are formed of Stdout, Stderr, -- Exit and tuples of those. class CmdResult a -- | The allowable String-like values that can be captured. class CmdString a -- | Options passed to command or cmd to control how -- processes are executed. data CmdOption -- | Change the current directory in the spawned process. By default uses -- this processes current directory. Successive Cwd options are -- joined together, to change into nested directories. Cwd :: FilePath -> CmdOption -- | Change the environment variables in the spawned process. By default -- uses this processes environment. Env :: [(String, String)] -> CmdOption -- | Add an environment variable in the child process. AddEnv :: String -> String -> CmdOption -- | Remove an environment variable from the child process. RemEnv :: String -> CmdOption -- | Add some items to the prefix and suffix of the $PATH -- variable. AddPath :: [String] -> [String] -> CmdOption -- | Given as the stdin of the spawned process. By default the -- stdin is inherited. Stdin :: String -> CmdOption -- | Given as the stdin of the spawned process. StdinBS :: ByteString -> CmdOption -- | Take the stdin from a file. FileStdin :: FilePath -> CmdOption -- | Pass the command to the shell without escaping - any arguments will be -- joined with spaces. By default arguments are escaped properly. Shell :: CmdOption -- | Treat the stdin/stdout/stderr messages as -- binary. By default String results use text encoding and -- ByteString results use binary encoding. BinaryPipes :: CmdOption -- | Name to use with traced, or "" for no tracing. By -- default traces using the name of the executable. Traced :: String -> CmdOption -- | Abort the computation after N seconds, will raise a failure exit code. -- Calls interruptProcessGroupOf and terminateProcess, -- but may sometimes fail to abort the process and not timeout. Timeout :: Double -> CmdOption -- | Should I include the stdout in the exception if the command -- fails? Defaults to False. WithStdout :: Bool -> CmdOption -- | Should I include the stderr in the exception if the command -- fails? Defaults to True. WithStderr :: Bool -> CmdOption -- | Should I echo the stdout? Defaults to True unless a -- Stdout result is required or you use FileStdout. EchoStdout :: Bool -> CmdOption -- | Should I echo the stderr? Defaults to True unless a -- Stderr result is required or you use FileStderr. EchoStderr :: Bool -> CmdOption -- | Should I put the stdout to a file. FileStdout :: FilePath -> CmdOption -- | Should I put the stderr to a file. FileStderr :: FilePath -> CmdOption -- | Compute dependencies automatically. Only works if -- shakeLintInside has been set to the files where autodeps -- might live. AutoDeps :: CmdOption -- | The command the user thinks about, before any munging. Defaults to the -- actual command. UserCommand :: String -> CmdOption -- | Options to fsatrace, a list of strings with characters such -- as "r" (reads) "w" (writes). Defaults to -- "rwmdqt" if the output of fsatrace is required. FSAOptions :: String -> CmdOption -- | Before starting the command in the child process, close all file -- handles except stdin, stdout, stderr in the child process. Uses -- close_fds from package process and comes with the same -- caveats, i.e. runtime is linear with the maximum number of open file -- handles (RLIMIT_NOFILE, see man 2 getrlimit on -- Linux). CloseFileHandles :: CmdOption -- | Don't run the process in its own group. Required when running -- docker. Will mean that process timeouts and asyncronous -- exceptions may not properly clean up child processes. NoProcessGroup :: CmdOption -- | Cause the stdin from the parent to be inherited. Might also require -- NoProcessGroup on Linux. Ignored if you explicitly pass a stdin. InheritStdin :: CmdOption -- | License : MIT Stability : experimental -- -- Cache utilities in Development.Shake lifted to -- MonadAction. module Development.Shake.Plus.Cache -- | Lifted version of newCache using RAction. newCache :: (MonadRules m, MonadReader r m, Eq k, Hashable k) => (k -> RAction r v) -> m (k -> RAction r v) -- | Lifted version of newCacheIO using RAction. newCacheIO :: (MonadIO m, MonadReader r m, Eq k, Hashable k) => (k -> RAction r v) -> m (k -> RAction r v) -- | License : MIT Stability : experimental -- -- Utilities in Development.Shake.Database lifted to -- MonadIO and MonadUnliftIO. module Development.Shake.Plus.Database -- | The type of an open Shake database. Created with -- shakeOpenDatabase or shakeWithDatabase. Used with -- shakeRunDatabase. You may not execute simultaneous calls using -- ShakeDatabase on separate threads (it will raise an error). data ShakeDatabase -- | Lifted shakeOpenDatabase shakeOpenDatabase :: MonadIO m => ShakeOptions -> Rules () -> m (IO ShakeDatabase, IO ()) -- | Unlifted shakeWithDatabase shakeWithDatabase :: MonadUnliftIO m => ShakeOptions -> Rules () -> (ShakeDatabase -> m a) -> m a -- | Lifted shakeOneShotDatabase shakeOneShotDatabase :: MonadIO m => ShakeDatabase -> m () -- | Lifted shakeRunDatabase shakeRunDatabase :: MonadIO m => ShakeDatabase -> [Action a] -> m ([a], [IO ()]) -- | Lifted shakeLiveFilesDatabase shakeLiveFilesDatabase :: MonadIO m => ShakeDatabase -> m [FilePath] -- | Lifted shakeProfileDatabase with well-typed path. shakeProfileDatabase :: MonadIO m => ShakeDatabase -> Path a File -> m () -- | Lifted shakeErrorsDatabase shakeErrorsDatabase :: MonadIO m => ShakeDatabase -> m [(String, SomeException)] -- | Unlifted shakeRunAfter shakeRunAfter :: MonadUnliftIO m => ShakeOptions -> [m ()] -> m () -- | License : MIT Stability : experimental -- -- Directory utilities in Development.Shake lifted to -- MonadAction and FileLike/DirLike. module Development.Shake.Plus.Directory -- | Lifted version of doesFileExist using well-typed Paths. doesFileExist :: (MonadAction m, FileLike b a) => a -> m Bool -- | Lifted version of doesDirectoryExist using well-typed -- Paths. doesDirectoryExist :: (MonadAction m, DirLike b a) => a -> m Bool -- | Lifted version of getDirectoryFiles using well-typed -- Paths. getDirectoryFiles :: (MonadAction m, DirLike b a) => a -> [FilePattern] -> m [Path Rel File] -- | Like getDirectoryFiles, but accepts a Within value and -- returns a Within contaning a list of Paths getDirectoryFilesWithin :: MonadAction m => Within b [FilePattern] -> m (Within b [Path Rel File]) -- | Like getDirectoryFilesWithin, but returns a list of -- Within values instead of a Within` of a list. getDirectoryFilesWithin' :: MonadAction m => Within b [FilePattern] -> m [Within b (Path Rel File)] -- | Lifted version of getDirectoryDirs using well-typed -- Paths. getDirectoryDirs :: (MonadAction m, DirLike b a) => a -> m [Path Rel Dir] -- | Lifted version of getDirectoryFilesIO using well-typed -- Paths. getDirectoryFilesIO :: (MonadIO m, DirLike b a) => a -> [FilePattern] -> m [Path Rel File] -- | Like getDirectoryFilesIO, but accepts a Within value and -- returns a Within contaning a list of Paths getDirectoryFilesWithinIO :: MonadIO m => Within b [FilePattern] -> m (Within b [Path Rel File]) -- | Like getDirectoryFilesWithinIO, but returns a list of -- Within values instead of a Within` of a list. getDirectoryFilesWithinIO' :: MonadIO m => Within b [FilePattern] -> m [Within b (Path Rel File)] -- | License : MIT Stability : experimental -- -- File utilities in Development.Shake lifted to -- MonadAction and FileLike/DirLike. module Development.Shake.Plus.File -- | Lifted version of copyFile that copies between any two -- FileLike. copyFile :: (MonadAction m, FileLike b a, FileLike b' a', Partial) => a -> a' -> m () -- | Like copyFile but for FileLikes that are of the same -- type, useful for type inference. copyFile' :: (MonadAction m, FileLike b a, Partial) => a -> a -> m () -- | Lifted version of copyFileChanged' that copies between two -- FileLike. copyFileChanged :: (MonadAction m, FileLike b a, FileLike b' a', Partial) => a -> a' -> m () -- | Like copyFileChanged but ensures the FileLikes are of -- the same type, useful for type inference. copyFileChanged' :: (MonadAction m, FileLike b a, Partial) => a -> a -> m () -- | Lifted version of readFile' that reads any FileLike. readFile' :: (MonadAction m, FileLike b a, Partial) => a -> m Text -- | Lifted version of readFileLines that reads any FileLike. readFileLines :: (MonadAction m, FileLike b a, Partial) => a -> m [Text] -- | Like readFile', but with an argument for the parent directory. -- Used for symmetry with the way getDirectoryFiles takes -- arguments. readFileIn' :: (MonadAction m, DirLike b d, FileLike Rel a, Partial) => d -> a -> m Text -- | Lifted version of writeFile that writes to any FileLike. writeFile' :: (MonadAction m, FileLike b a, Partial) => a -> Text -> m () -- | Lifted version of writeFileLines that writes to any -- FileLike. writeFileLines :: (MonadAction m, FileLike b a, Partial) => a -> [Text] -> m () -- | Like writeFile', but with an argument for the parent directory. -- Used for symmetry with the way getDirectoryFiles takes -- arguments. writeFileIn' :: (MonadAction m, DirLike b d, FileLike Rel a, Partial) => d -> a -> Text -> m () -- | Lifted version of writeFileChanged that writes to any -- FileLike. writeFileChanged :: (MonadAction m, FileLike b a, Partial) => a -> Text -> m () -- | Like writeFileChanged', but with an argument for the parent -- directory. Used for symmetry with the way getDirectoryFiles -- takes arguments. writeFileChangedIn :: (MonadAction m, DirLike b d, FileLike Rel a, Partial) => d -> a -> Text -> m () -- | Lifted version of removeFiles that accepts any DirLike. removeFiles :: (MonadAction m, DirLike b d) => d -> [FilePattern] -> m () -- | Lifted version of removeFilesAfter that accepts any -- DirLike.. removeFilesAfter :: (MonadAction m, DirLike b d) => d -> [FilePattern] -> m () -- | Class representing a type a that can be compiled down to a -- `Path b File`. class PathLike b File a => FileLike b a toFile :: FileLike b a => a -> Path b File -- | Class repreenting a type a that can be compiled down to a -- `Path b Dir`. class PathLike b Dir a => DirLike b a toDir :: DirLike b a => a -> Path b Dir -- | Like </>, but works for any DirLike and relative -- FileLike to produce a concrete Path. (/>) :: (DirLike b a, FileLike Rel c) => a -> c -> Path b File -- | License : MIT Stability : experimental -- -- Filerules in Development.Shake lifted to MonadAction and -- FileLike/DirLike. module Development.Shake.Plus.FileRules -- | Lifted version of need, This still uses Strings because -- it may refer to a phony rule. For the Path specific version use -- needP need :: (Partial, MonadAction m, Foldable t) => t String -> m () -- | Lifted version of want. This still uses Strings because -- it may refer to a phony rule. For the Path specific version use -- wantP. want :: (Partial, MonadRules m, Foldable t) => t String -> m () -- | Lifted version of need using well-typed Paths needP :: (Partial, MonadAction m, Traversable t, FileLike b a) => t a -> m () -- | Lifted version of want using well-typed Paths wantP :: (Partial, MonadRules m, Traversable t, FileLike b a) => t a -> m () -- | Like needP, but accepts Paths relative to the first -- argument. needIn :: (Partial, MonadAction m, Traversable t, DirLike Rel d, FileLike Rel a) => d -> t a -> m () -- | Like wantP, but accepts Paths relative to the first -- argument. wantIn :: (Partial, MonadRules m, Traversable t, DirLike Rel d, FileLike Rel a) => d -> t a -> m () -- | Like needIn, but accepts a list of Paths inside a -- Within value. needWithin :: (Partial, MonadAction m, Traversable t, FileLike Rel a) => Within Rel (t a) -> m () -- | Like wantIn, but accepts a list of Paths insides a -- Within value. wantWithin :: (Partial, MonadRules m, Traversable t, FileLike Rel a) => Within Rel (t a) -> m () -- | Lifted version of %> using well-typed Paths (%>) :: (Partial, MonadReader r m, MonadRules m) => FilePattern -> (Path Rel File -> RAction r ()) -> m () -- | Lifted version of |%> using well-typed Paths (|%>) :: (Partial, MonadReader r m, MonadRules m) => [FilePattern] -> (Path Rel File -> RAction r ()) -> m () -- | Within variant of `(%>)`, used to keep track of local -- directories. (%^>) :: (Partial, MonadReader r m, MonadRules m) => Within Rel FilePattern -> (Within Rel (Path Rel File) -> RAction r ()) -> m () -- | Within variant of `(%>)`, used to keep track of local -- directories. (|%^>) :: (Partial, MonadReader r m, MonadRules m) => Within Rel [FilePattern] -> (Within Rel (Path Rel File) -> RAction r ()) -> m () -- | Lifted version of phony using RAction phony :: (MonadReader r m, MonadRules m) => String -> RAction r () -> m () -- | License : MIT Stability : experimental -- -- Experimental loaders for shake-plus. Load a collection of -- FilePatterns as a HashMap. module Development.Shake.Plus.Loaders -- | Load a directory of FilePatterns via some loading function. -- This should be a newCache operation that takes full filepaths. batchLoad :: MonadAction m => Path b Dir -> [FilePattern] -> (Path b File -> m a) -> m (HashMap (Path Rel File) a) -- | Like batchLoad, but returns an Within of a Dir -- containing the HashMap batchLoadWithin :: MonadAction m => Within b [FilePattern] -> (Within b (Path Rel File) -> m a) -> m (Within b (HashMap (Path Rel File) a)) -- | Like batchLoadWithin', but returns a HashMap containing -- Within values instead of an Within of a -- Hashmap. batchLoadWithin' :: MonadAction m => Within b [FilePattern] -> (Within b (Path Rel File) -> m a) -> m (HashMap (Within b (Path Rel File)) a) -- | License : MIT Stability : experimental -- -- Oracle utilities in Development.Shake lifted to -- MonadAction and MonadRules. module Development.Shake.Plus.Oracle -- | Lifted version of addOracle using RAction runner. addOracle :: (MonadRules m, MonadReader r m, RuleResult q ~ a, ShakeValue q, ShakeValue a, Partial) => (q -> RAction r a) -> m (q -> RAction r a) -- | Lifted version of addOracleCache using RAction runner. addOracleCache :: (MonadRules m, MonadReader r m, RuleResult q ~ a, ShakeValue q, ShakeValue a, Partial) => (q -> RAction r a) -> m (q -> RAction r a) -- | Lifted version of addOracleHash using RAction runner. addOracleHash :: (MonadRules m, MonadReader r m, RuleResult q ~ a, ShakeValue q, ShakeValue a, Partial) => (q -> RAction r a) -> m (q -> RAction r a) -- | Lifted version of askOracle. askOracle :: (MonadAction m, RuleResult q ~ a, ShakeValue q, ShakeValue a) => q -> m a -- | Lifted version of askOracles. askOracles :: (MonadAction m, RuleResult q ~ a, ShakeValue q, ShakeValue a) => [q] -> m [a] -- | The type mapping between the key or a rule and the resulting -- value. See addBuiltinRule and apply. type family RuleResult key :: Type -- | License : MIT Stability : experimental -- -- Temp utilities in Development.Shake unlifted to -- MonadUnliftAction. module Development.Shake.Plus.Temp -- | Unlifted version of withTempFile with well-typed Path. withTempFile :: (MonadUnliftAction m, MonadThrow m) => (Path Rel File -> m a) -> m a -- | Unlifted version of withTempFile with well-typed Path. withTempDir :: (MonadUnliftAction m, MonadThrow m) => (Path Rel Dir -> m a) -> m a -- | Unlifted version of withTempFileWithin with well-typed -- Paths. withTempFileWithin :: (MonadUnliftAction m, MonadThrow m) => Path b Dir -> (Path Rel File -> m a) -> m a -- | Unlifted version of withTempDirWithin with well-typed -- Paths. withTempDirWithin :: (MonadUnliftAction m, MonadThrow m) => Path b Dir -> (Path Rel Dir -> m a) -> m a -- | License : MIT Stability : experimental -- -- Module exports for Development.Shake.Plus. Re-exports everything in -- this package as well as Path, Path.Like and -- Within. module Development.Shake.Plus -- | License : MIT Stability : experimental -- -- Environenment variable utilities in Development.Shake lifted to -- MonadAction. module Development.Shake.Plus.Env -- | Lifted version of getEnv getEnv :: MonadAction m => String -> m (Maybe String) -- | Lifted version of getEnvWithDefault getEnvWithDefault :: MonadAction m => String -> String -> m String -- | Lifted version of getEnvError getEnvError :: (Partial, MonadAction m) => String -> m String