---
License: MIT
LicenseFile: LICENSE
LicenseColor: yellow
---
# {{.Name}}
{{template "badge/travis" .}} {{template "badge/appveyor" .}} {{template "badge/goreport" .}} {{template "badge/godoc" .}} {{template "license/shields" .}}
{{pkgdoc}}
See [emd README file](https://raw.githubusercontent.com/mh-cbon/emd/master/README.e.md)
# {{toc 5}}
# Install
{{template "gh/releases" .}}
#### glide
{{template "glide/install" .}}
#### Bintray
{{template "choco_bintray/install" .}}
#### Chocolatey
{{template "choco/install" .}}
#### linux rpm/deb repository
{{template "linux/bintray_repo" .}}
#### linux rpm/deb standalone package
{{template "linux/gh_pkg" .}}
# Usage
#### $ {{exec "emd" "-help" | color "sh"}}
#### $ {{shell "emd gen -help" | color "sh"}}
#### $ {{shell "emd init -help" | color "sh"}}
# Cli examples
```sh
# Init a basic emd file to get started.
emd init
# Reads content of README.e.md, outputs to README.md
emd gen -out README.md
# same with data injections,
emd gen -out README.md --data='{"CsUUID":"xxxx"}'
# use verbose mode
VERBOSE=y emd gen
```
# Templates helper
#### Define data
Template data can be defined directly into the `README.e.md` file using a `prelude`,
```yml
---
title: "Easygen - Easy to use universal code/text generator"
date: "2016-01-01T22:13:12-05:00"
categories: ["Tech"]
tags: ["go","programming","easygen","CLI"]
---
```
This `prelude` must be inserted right before the regular `md` content.
The keys are injected into the template `dot`, the value are `json` decoded.
Template can access those data using name: `{{echo "{{.categories}}" "{{.tags}}" }}`
#### Data
| Key | Description |
| --- | --- |
| __ProviderURL__ | The vcs provider url (example: github.com). |
| __ProviderName__ | The vcs provider name (example: github). |
| __Name__ | Project name based on the cwd (example: emd). |
| __User__ | User name based on the cwd (example: mh-cbon). |
| __URL__ | Project url as determined by the cwd (example: github.com/mh-cbon/emd). |
| __ProjectURL__ | Project url as determined by the cwd + relative path (example: github.com/mh-cbon/emd/cmd). |
| __Branch__ | Current vcs branch name (defaults to master). |
#### Functions
Functions can be invoked like this `{{echo "{{func \"arg1\" \"arg2\"}}" }}`
Options are keys to define into the `prelude`:
```yaml
---
emd_cat_pre: "### > "
emd_gotest_pre: "### $ "
emd_exec_pre: "### $ "
emd_shell_pre: "### $ "
---
```
#### Files functions
| Name | Description | Options |
| --- | --- | -- |
| __cat__(f string) | Displays a file header.
Read and return the file body. | `emd_cat_pre: "### > "`: string to show right before the file path. |
| __read__(f string) | Read and return the file body. | |
| __yaml__(f string, keypaths ...string) | Parse given file as yaml, locate given path into the yaml content, yaml re encode it, return its string. | |
#### Templates functions
| Name | Description | Options |
| --- | --- | -- |
| __render__(name string, data interface{}, keyValues ...interface{}) | Render given `template` name, using `data`.
Additionnal data values can be declared using `keyValues ...interface{}` signature, such as
`render("x", data, "key1", "val1", "key2", "val2")`. | | |
| __set__(name string, x interface{}) | Save given value `x` as `name` on dot `.`. | |
#### Go utils functions
| Name | Description | Options |
| --- | --- | -- |
| __pkgdoc__(files ...string) | Read the first of `files`, or `main.go`, lookup for its package comment and return it as plain text. | |
| __gotest__(rpkg string, run string, args ...string) | Run `go test -v -run `, return its output.
`rpkg` can be a path to a relative folder like `./emd`. It will resolve to
`github.com/mh-cbon/emd/emd`| `emd_gotest_pre: "### $ "` defines a sring to show right before the `go test` command line. |
#### Markdown functions
| Name | Description | Options |
| --- | --- | -- |
| __color__(color string, content string]) string | Embed given content with triple backquote syntax colorizer support. | |
| __toc__(maxImportance int, title ...string) string | Displays a `TOC` of the `README` file being processed.
`maxImportance` defines the titles to select by their numbers of `#`.
`titles` define the title to display, defaults to `TOC`.
Titles displayed before the call to `{{echo "{{toc x}}" }}` are automatically ignored.| |
| __preline__(pre string, content string) string | Prepend every line of `content` with `pre`. | |
| __echo__(f string) string | Prints `f`, usefull to print strings which contains the template tokens. | |
| __link__(url string, text ...string) string | Prints markdown link. | |
| __img__(url string, alt ...string) string | Prints markdown image. | |
| __concat__(x ...string) string | Concat all `x`. | |
| __pathjoin__(x ...string) string | Join all `x` with `/`. | |
#### Cli functions
| Name | Description | Options |
| --- | --- | -- |
| __exec__(bin string, args ...string) | Display a command line header.
Execute and return its response. | `emd_exec_pre: "### > "`: string to show right before the command line. |
| __shell__(s string) | Display a command line header.
Execute the command on a shell, and return the its response. | `emd_shell_pre: "### > "`: string to show right before the command line. |
#### Deprecated function
| Name | Description |
| --- | --- |
| __file__(f string[, colorizer string]) | Read and display a file enclosed with triples backquotes. If `colorizer` is empty, it defaults to the file extension. |
| __cli__(bin string, args ...string) | Execute and display a command line enclosed with triples backquotes. The highlight defaults to `sh`. |
#### Templates
##### std
| Name | Description | Params |
| --- | --- | --- |
| __gh/releases__ | Show a text to link the release page. | |
| __badge/travis__ | Show a travis badge. | |
| __badge/appveyor__ | Show an appveyor badge. | |
| __badge/codeship__ | Show a codeship badge. | __CsProjectID__: The codeship project ID (*123465*).
__CsUUID__: the codeship project UUID (*654654-6465-54...*).
Within your `e.md` file use the `render` function, `{{echo "{{render \"badge/codeship\" . \"CsUUID\" \"xx\" \"CsProjectID\" \"yyy\"}}"}}`.
Via cli, add it with `--data '{"CsUUID": "xx", "CsProjectID":"yy"}'`. |
| __choco_bintray/install__ | Show a snippet to install the package with chocolatey from bintray repos. | __BintrayRepo__: the name of the bintray repo (default: `choco`) |
| __choco/install__ | Show a snippet to install the package with chocolatey. | |
| __linux/gh_src_repo__ | Show an sh snippet to install the package via `rpm|deb|apt` repositories hosted on gh-pages. | |
| __linux/bintray_repo__ | Show an sh snippet to install the package via `rpm|deb|apt` repositories hosted on bintray. | |
| __linux/gh_pkg__ | Show an sh snippet to install the package via standalone packages (deb/rpm). | |
| __license/shields__ | Show a license badge. | __License__: The license name like `MIT`, `BSD`.
__LicenseFile__: The path to the license file.
__LicenseColor__: The color of the badge (defaults t o blue). |
##### go
| Name | Description | Params |
| --- | --- | --- |
| __go/install__ | Show an sh snippet to install the package via `go get`. | |
| __badge/godoc__ | Show a godoc badge. | |
| __badge/goreport__ | Show a goreport badge. | |
##### go-nonstd
| Name | Description | Params |
| --- | --- | --- |
| __glide/install__ | Show an sh snippet to install the package via `glide`. | |
# API example
#### > {{cat "main_test.go" | color "go"}}
# Recipes
#### Generate HTML content
To directly generate HTML content out of `emd` output, for example, with `gh-markdown-cli`,
```sh
npm install gh-markdown-cli -g
emd gen | mdown
```
#### Release the project
```sh
gump patch -d # check
gump patch # bump
```
# History
[CHANGELOG](CHANGELOG.md)