65 lines
No EOL
1.1 KiB
Bash
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
|
|
#} |