Skip to content

Commit

Permalink
Merge pull request #49 from malteneuss/patch-1
Browse files Browse the repository at this point in the history
Add quickstart section to Readme
  • Loading branch information
snoyberg authored Sep 9, 2024
2 parents ec0b53c + 2f1e81a commit b846761
Showing 1 changed file with 38 additions and 4 deletions.
42 changes: 38 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,40 @@
## file-embed
# file-embed ![Hackage](https://img.shields.io/hackage/v/file-embed.svg) ![Hackage-Deps](https://img.shields.io/hackage-deps/v/file-embed.svg) ![Tests](https://github.com/snoyberg/file-embed/workflows/Tests/badge.svg)

![Tests](https://github.com/snoyberg/file-embed/workflows/Tests/badge.svg)
Embed arbitrary files like JSON or plain text into your Haskell code as if they were written inside Haskell.

Use Template Haskell to read a file or all the files in a directory, and turn
them into (path, bytestring) pairs embedded in your haskell code.
Note: This library uses Template Haskell for the embedding.

## Quickstart

Add [the latest version](https://hackage.haskell.org/package/file-embed) of `file-embed` to your
package description `<package>.cabal` or Stack `package.yaml` file.

Given the folder structure

```shell
$ tree
.
└── myapp
│ ├── app
│ │ └── Main.hs
│ ├── embedded.json
│ └── myapp.cabal
└── cabal.project
```

you can embed a file as follows:

```haskell
-- file: Main.hs
{-# LANGUAGE TemplateHaskell #-}

import qualified Data.ByteString as BS
import Data.FileEmbed (embedFileRelative)

myFile :: BS.ByteString
myFile = $(embedFileRelative "embedded.json")
```

The path to `embedFileRelative` is relative to the package root; the folder where the `<package>.cabal` file is.
Take a look at the [Hackage documentation](https://hackage.haskell.org/package/file-embed/docs/Data-FileEmbed.html)
for more examples and variations.

0 comments on commit b846761

Please sign in to comment.