| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Drasil.FileHandling.FileLayout
Contents
Synopsis
- data FileLayout
- name :: FileLayout -> PathSegment
- file :: Writeable doc => PathSegment -> doc -> FileLayout
- exactFile :: Writeable doc => PathSegment -> doc -> FileLayout
- directory :: Foldable f => PathSegment -> f FileLayout -> FileLayout
- data OverwritePolicy
- writeFiles :: OverwritePolicy -> OsPath -> FileLayout -> IO ()
File Layout
data FileLayout Source #
Container for laying out files in a single container for writing to disk. Notes:
- Polymorphic over the representation of the file contents. For
rendering, writeFiles requires the file content representation
satisfy
Writeable. - Only permits writing files/directories relative to a base path
provided. Does not permit `..`,
., nor~as directory names. - System-local path separator is forbidden from use in directory names.
- Assumes host file system is case-sensitive (i.e., recognizes
txtand `a.txt` as different paths).
name :: FileLayout -> PathSegment Source #
Get the top-level name (a PathSegment) of a FileLayout.
Constructors
file :: Writeable doc => PathSegment -> doc -> FileLayout Source #
Create a file FileLayout. When written, this file will have a /trailing
newline always added/. Use exactFile for building raw files. This is
primarily for synthetic files/generated ones.
exactFile :: Writeable doc => PathSegment -> doc -> FileLayout Source #
Create a file FileLayout containing the exact file contents.
directory :: Foldable f => PathSegment -> f FileLayout -> FileLayout Source #
Create a directory FileLayout, optionally containing any number of nested
files.
Writing
data OverwritePolicy Source #
When writing files or creating directories, is overwriting allowed?
Constructors
| OverwriteAllowed | |
| NeverOverwrite |
writeFiles :: OverwritePolicy -> OsPath -> FileLayout -> IO () Source #
Write a FileLayout to disk about a base path.
If the given OverwritePolicy is NeverOverwrite, this will fail if the
top-level target path already exists. If it is OverwriteAllowed, it will
overwrite existing files.
Disclaimer: For case-insensitive file systems where different paths in the layout might reference the same on-disk path, this code will fail.