#!/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 #}