Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Standalone string interpolator and template processor

License

NotificationsYou must be signed in to change notification settings

gliderlabs/sigil

Repository files navigation

Standalone string interpolator and template processor

echo'${name} is{{ range seq ${count:-3} }} cool{{ end }}!'| sigil -p name=Sigil
Sigil is cool cool cool!

Sigil is a command line tool for template processing and POSIX-compliantvariable expansion. It was created for configuration templating, but can be usedfor any text processing.

Getting Sigil

curl -L"https://github.com/gliderlabs/sigil/releases/download/v0.10.0/gliderlabs-sigil_0.10.0_$(uname -sm|tr\ _).tgz" \| tar -zxC /usr/local/bin

Other releases can be downloaded fromGithub Releases.

Using Sigil

Template text can be provided via STDIN or from a file if provided with the-fflag. Any other arguments are key-values in the form<key>=<value>. They areused as variables.

  • echo 'Hello, $name' | sigil -p name=Jeff
  • sigil -p -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, whichamong 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 makesSigil great for quick and simple string interpolation.

Template style

The other syntax to use variables is consistent with the rest of the templatingsyntax. It uses{{ and}} to define template expressions. Variable expansionin this form is simply used as:

  • {{ $variable }}

You can do much more with this syntax, such as modifier pipelines. All of whichis explained below.

Custom Delimiters

Sometimes you want to use sigil to generate text, which uses golang templating itself.For example if you want to generatepacker configurationyour template might contain a lot of{{ and}}.

Instead of replacing all{{ with{{“{{”}}, you can change the delimiters,by setting theSIGIL_DELIMS environment variable. It is the left and rightdelimiter strings, separated by a coma.

SIGIL_DELIMS={{{,}}}  sigil -i'hello {{{ $name }}}' name=packer

Functions

There are a number of builtin functions that can be used as modifiers,conditional tests, expansion data sources, and more. There are two referencesfor functions available:

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'stext/template package. You can read fulldocumentation there.

License

BSDbeacon

About

Standalone string interpolator and template processor

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors12


[8]ページ先頭

©2009-2025 Movatter.jp