From 3382c929523eabaf2ecc079cd483d269c2b4af52 Mon Sep 17 00:00:00 2001 From: Bruno Tavares Date: Fri, 14 Mar 2014 14:51:08 -0300 Subject: [PATCH] Adds templating options to stream and file --- docs/index.md | 2 ++ docs/kickstart/file/template.md | 18 ++++++++++++++++++ docs/kickstart/stream/template.md | 16 ++++++++++++++++ kickstart/recipes/kickstart/file.sh | 6 ++++++ kickstart/recipes/kickstart/stream.sh | 4 ++++ 5 files changed, 46 insertions(+) create mode 100644 docs/kickstart/file/template.md create mode 100644 docs/kickstart/stream/template.md diff --git a/docs/index.md b/docs/index.md index baa5f8d..a7398ca 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,6 +12,7 @@ * [kickstart.download.stream](kickstart/download/stream) * [kickstart.file.contains](kickstart/file/contains) * [kickstart.file.link](kickstart/file/link) +* [kickstart.file.template](kickstart/file/template) * [kickstart.group.create](kickstart/group/create) * [kickstart.module.apply_recipe](kickstart/module/apply_recipe) * [kickstart.module.apply_role](kickstart/module/apply_role) @@ -36,6 +37,7 @@ * [kickstart.service.start](kickstart/service/start) * [kickstart.service.stop](kickstart/service/stop) * [kickstart.stream.contains](kickstart/stream/contains) +* [kickstart.stream.template](kickstart/stream/template) * [kickstart.user.add_group](kickstart/user/add_group) * [kickstart.user.create](kickstart/user/create) * [kickstart.user.exec](kickstart/user/exec) diff --git a/docs/kickstart/file/template.md b/docs/kickstart/file/template.md new file mode 100644 index 0000000..7b1b305 --- /dev/null +++ b/docs/kickstart/file/template.md @@ -0,0 +1,18 @@ +# kickstart.file.template file [positional arguments...] + +Receives a file for templating, eval the arguments and return it. +It evals the file under the current environement, with the variables and functions available. + +### Example + +```bash +$ cat file +\$argument is $argument +$ argument=awesome kickstart.file.template file +$argument is awesome + +$ cat file +$1, $2 and $3 +$ kickstart.file.template file Alice Bob Eve +Alice, Bob and Eve +``` diff --git a/docs/kickstart/stream/template.md b/docs/kickstart/stream/template.md new file mode 100644 index 0000000..0bcff01 --- /dev/null +++ b/docs/kickstart/stream/template.md @@ -0,0 +1,16 @@ +# kickstart.stream.template [positional arguments...] + +Receives from stdin the template string, eval the arguments and return it. +It evals the stream under the current environement, with the variables and functions available. + +### Example + +```bash +$ echo '\$argument is $argument' | \ + argument=awesome kickstart.stream.template +$argument is awesome + +$ echo '$1, $2 and $3' | \ + kickstart.stream.template Alice Bob Eve +Alice, Bob and Eve +``` diff --git a/kickstart/recipes/kickstart/file.sh b/kickstart/recipes/kickstart/file.sh index af35c17..96bfd98 100644 --- a/kickstart/recipes/kickstart/file.sh +++ b/kickstart/recipes/kickstart/file.sh @@ -6,3 +6,9 @@ kickstart.file.link() { kickstart.file.contains() { grep -q "$2" $1 2>/dev/null } + +kickstart.file.template() { + file=$1 + shift + kickstart.stream.template "$@" < $file +} diff --git a/kickstart/recipes/kickstart/stream.sh b/kickstart/recipes/kickstart/stream.sh index 8c76673..d619273 100644 --- a/kickstart/recipes/kickstart/stream.sh +++ b/kickstart/recipes/kickstart/stream.sh @@ -1,3 +1,7 @@ kickstart.stream.contains() { grep -q "$1" 2>/dev/null } + +kickstart.stream.template() { + eval "echo -e \"`cat`\"" +}