-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from gliderlabs/master
v0.2.0
- Loading branch information
Showing
5 changed files
with
112 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
build | ||
site |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,93 @@ | ||
# sigil | ||
# Sigil | ||
|
||
Standalone string interpolator and template processor | ||
|
||
``` | ||
$ echo '${name} is{{ range seq ${count:-3} }} cool{{ end }}!' | sigil name=Sigil | ||
Sigil is cool cool cool! | ||
``` | ||
|
||
Sigil is a command line tool for template processing and POSIX-compliant | ||
variable expansion. It was created for configuration templating, but can be used | ||
for any text processing. | ||
|
||
## Getting Sigil | ||
|
||
``` | ||
$ curl https://dl.gliderlabs.com/sigil/latest/$(uname -sm|tr \ _).tgz \ | ||
| tar -zxC /usr/local/bin | ||
``` | ||
|
||
Other releases can be downloaded from [Github Releases](https://github.com/gliderlabs/sigil/releases). | ||
|
||
## Using Sigil | ||
|
||
Template text can be provided via STDIN or from a file if provided with the `-f` | ||
flag. Any other arguments are key-values in the form `<key>=<value>`. They are | ||
used as variables. | ||
|
||
* `echo 'Hello, $name' | sigil name=Jeff` | ||
* `sigil -f config.tmpl var1=foo "var2=Hello world"` | ||
|
||
### Variables | ||
|
||
#### POSIX style | ||
|
||
There are two forms of variable syntax in Sigil. The first is POSIX style, which | ||
among other features allows default values or enforces required values: | ||
|
||
* `$variable` - normal POSIX style | ||
* `${variable:-"default"}` - expansion with default value | ||
* `${variable:?}` - fails when not set | ||
|
||
Environment variables are also available as POSIX style variables. This makes | ||
Sigil great for quick and simple string interpolation. | ||
|
||
#### Template style | ||
|
||
The other syntax to use variables is consistent with the rest of the templating | ||
syntax. It uses `{{` and `}}` to define template expressions. Variable expansion | ||
in this form is simply used as: | ||
|
||
* `{{ $variable }}` | ||
|
||
You can do much more with this syntax, such as modifier pipelines. All of which | ||
is explained below. | ||
|
||
### Functions | ||
|
||
There are a number of builtin functions that can be used as modifiers, | ||
conditional tests, expansion data sources, and more. There are two references | ||
for functions available: | ||
|
||
* [Sigil builtins](http://godoc.org/github.com/gliderlabs/sigil/builtin) | ||
* [Go template builtins](http://golang.org/pkg/text/template/#hdr-Functions) | ||
|
||
Here are a few examples: | ||
|
||
* `{{ $variable | capitalize }}` | ||
* `{{ include "file.tmpl" "var1=foo" "var2=bar" }}` | ||
* `{{ file "example.txt" | replace "old" "new" }}` | ||
* `{{ json "file.json" | pointer "/Widgets/0/Name" }}` | ||
|
||
### Conditionals | ||
|
||
* `{{ if expr }} true {{ end }}` | ||
* `{{ if expr }} true {{ else }} false {{ end }}` | ||
* `{{ if expr }} true {{ else if expr }} also true {{ end }}` | ||
|
||
### Loops / Iteration | ||
|
||
* `{{ range expr }} element: {{.}} {{ end }}` | ||
* `{{ range expr }} elements {{ else }} no elements {{ end }}` | ||
|
||
### Full Syntax | ||
|
||
Lots more is possible with this template syntax. Sigil is based on Go's | ||
[text/template package](http://golang.org/pkg/text/template/). You can read full | ||
documentation there. | ||
|
||
|
||
## License | ||
|
||
BSD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters