Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

shab templating language

Build Status

One day, @roberth and @zimbatm were tired of manually replacing variables with sed. What if they could just drop variables in the file and have bash do the substitution for them? Get the full power of the bash variable expansion, brilliant!

Thus was born the shab templating language. Minimal size, maximum power (assuming bash is already installed).

$ wc -l shab
24 shab

SECURITY WARNING: only use templates that you trust! The template really does have all the power of a shell script.

Use cases

  • Configure a minimal docker container application during boot
  • Fullfill a weird sense of minimalism and humour

Example

Input:

$ cat example.shab
Hello,

this is a shab templating example.

Usage: ./shab example.shab

Your hostname: $(hostname)
Your user: ${USER:-unknown}

Output:

$ shab example.shab
Hello,

this is a shab templating example.

Usage: ./shab example.shab

Your hostname: x1
Your user: zimbatm

Nix

Of course you want to use this in your Nix expressions!

with import <nixpkgs> { overlays = [ (import ./overlay.nix) ]; };
shab.renderText
  "\${GREETING}\${TARGET:+, }\${TARGET}"
  { GREETING = "Hello"; TARGET = "world"; }

Docker

Use our minimal enterprise-ready docker images with only bash and shab:

$ cat example.shab | docker run -i --rm zimbatm/shab
Hello,

this is a shab templating example.

Usage: ./shab example.shab

Your hostname: 706d660042c4
Your user: unknown

Template format

Basically anything that bash can do.

Dependencies

  • bash
  • cat

Related projects

Credits

  • The authors of the UNIX V7 shell
  • Richard Stallman, GNU, and bash maintainers for their reimplementation
  • Our source of inspiration, Rube Goldberg

About

the bash templating language

Resources

License

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •