mirror of https://github.com/pixelfed/pixelfed.git
61 lines
2.1 KiB
Bash
Executable File
61 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
: "${ENTRYPOINT_ROOT:="/docker"}"
|
|
|
|
# shellcheck source=SCRIPTDIR/../helpers.sh
|
|
source "${ENTRYPOINT_ROOT}/helpers.sh"
|
|
|
|
entrypoint-set-script-name "$0"
|
|
|
|
# Show [git diff] of templates being rendered (will help verify output)
|
|
: "${ENTRYPOINT_SHOW_TEMPLATE_DIFF:=1}"
|
|
# Directory where templates can be found
|
|
: "${ENTRYPOINT_TEMPLATE_DIR:=/docker/templates/}"
|
|
# Root path to write template template_files to (default is '', meaning it will be written to /<path>)
|
|
: "${ENTRYPOINT_TEMPLATE_OUTPUT_PREFIX:=}"
|
|
|
|
declare template_file relative_template_file_path output_file_dir
|
|
|
|
# load all dot-env config files
|
|
load-config-files
|
|
|
|
# export all dot-env variables so they are available in templating
|
|
#
|
|
# shellcheck disable=SC2068
|
|
export ${seen_dot_env_variables[@]}
|
|
|
|
find "${ENTRYPOINT_TEMPLATE_DIR}" -follow -type f -print | while read -r template_file; do
|
|
# Example: template_file=/docker/templates/usr/local/etc/php/php.ini
|
|
|
|
# The file path without the template dir prefix ($ENTRYPOINT_TEMPLATE_DIR)
|
|
#
|
|
# Example: /usr/local/etc/php/php.ini
|
|
relative_template_file_path="${template_file#"${ENTRYPOINT_TEMPLATE_DIR}"}"
|
|
|
|
# Adds optional prefix to the output file path
|
|
#
|
|
# Example: /usr/local/etc/php/php.ini
|
|
output_file_path="${ENTRYPOINT_TEMPLATE_OUTPUT_PREFIX}/${relative_template_file_path}"
|
|
|
|
# Remove the file from the path
|
|
#
|
|
# Example: /usr/local/etc/php
|
|
output_file_dir=$(dirname "${output_file_path}")
|
|
|
|
# Ensure the output directory is writable
|
|
if ! is-writable "${output_file_dir}"; then
|
|
log-error-and-exit "${output_file_dir} is not writable"
|
|
fi
|
|
|
|
# Create the output directory if it doesn't exists
|
|
ensure-directory-exists "${output_file_dir}"
|
|
|
|
# Render the template
|
|
log-info "Running [gomplate] on [${template_file}] --> [${output_file_path}]"
|
|
gomplate <"${template_file}" >"${output_file_path}"
|
|
|
|
# Show the diff from the envsubst command
|
|
if is-true "${ENTRYPOINT_SHOW_TEMPLATE_DIFF}"; then
|
|
git --no-pager diff --color=always "${template_file}" "${output_file_path}" || : # ignore diff exit code
|
|
fi
|
|
done
|