Safe Haskell | None |
---|---|
Language | Haskell2010 |
Implementation of the dhall to-directory-tree
subcommand
Synopsis
- toDirectoryTree :: FilePath -> Expr Void Void -> IO ()
- newtype FilesystemError = FilesystemError {}
Filesystem
toDirectoryTree :: FilePath -> Expr Void Void -> IO () Source #
Attempt to transform a Dhall record into a directory tree where:
- Records are translated into directories
Text
values or fields are translated into filesOptional
values are omitted ifNone
For example, the following Dhall record:
{ dir = { `hello.txt` = "Hello\n" } , `goodbye.txt`= Some "Goodbye\n" , `missing.txt` = None Text }
... should translate to this directory tree:
$ tree result result ├── dir │ └── hello.txt └── goodbye.txt $ cat result/dir/hello.txt Hello $ cat result/goodbye.txt Goodbye
Use this in conjunction with the Prelude's support for rendering JSON/YAML in "pure Dhall" so that you can generate files containing JSON. For example:
let JSON = https://prelude.dhall-lang.org/v12.0.0/JSON/package.dhall sha256:843783d29e60b558c2de431ce1206ce34bdfde375fcf06de8ec5bf77092fdef7 in { `example.json` = JSON.render (JSON.array [ JSON.number 1.0, JSON.bool True ]) , `example.yaml` = JSON.renderYAML (JSON.object (toMap { foo = JSON.string "Hello", bar = JSON.null })) }
... which would generate:
$ cat result/example.json [ 1.0, true ] $ cat result/example.yaml ! "bar": null ! "foo": "Hello"
This utility does not take care of type-checking and normalizing the
provided expression. This will raise a FilesystemError
exception upon
encountering an expression that is not a TextLit
or RecordLit
.
newtype FilesystemError Source #
This error indicates that you supplied an invalid Dhall expression to the
directoryTree
function. The Dhall expression could not be translated to
a directory tree.
Instances
Show FilesystemError Source # | |
Defined in Dhall.DirectoryTree showsPrec :: Int -> FilesystemError -> ShowS # show :: FilesystemError -> String # showList :: [FilesystemError] -> ShowS # | |
Exception FilesystemError Source # | |
Defined in Dhall.DirectoryTree |