dx/dxkit/modules/template.module.sh

65 lines
No EOL
1.1 KiB
Bash

#!/usr/bin/env bash
function template::path() {
local dir=""
local file=""
if [[ $# -eq 1 ]]; then
file="$1"
else
dir="$1"
file="$2"
fi
if [[ -n "$dir" ]]; then
echo "$(ctx::templates)/$dir/$file.template"
else
echo "$(ctx::templates)/$file.template"
fi
}
function template::render() {
local template="$1"
local target="$2"
shift 2
require_file "$template" || {
log::fs_error "Template not found: $template"
return 1
}
mkdir -p "$(dirname "$target")"
# Build env assignment list
local env_vars=()
for var in "$@"; do
env_vars+=("$var")
done
if ! env "${env_vars[@]}" envsubst < "$template" > "$target"; then
log::fs_error "Failed rendering template: $template"
return 1
fi
}
#function template::render() {
# local template="$1"
# local target="$2"
# shift 2
#
# require_file "$template" || {
# log::fs_error "Template not found: $template"
# return 1
# }
#
# mkdir -p "$(dirname "$target")"
#
# for var in "$@"; do
# export "$var"
# done
#
# if ! envsubst < "$template" > "$target"; then
# log::fs_error "Failed rendering template: $template"
# return 1
# fi
#}