mirror of
https://github.com/bensuperpc/infrastructure.git
synced 2026-07-27 13:28:09 +02:00
51 lines
1.3 KiB
Bash
Executable File
51 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SERVICES_DIR="${ROOT_DIR}/infrastructure/services"
|
|
|
|
random_value() {
|
|
openssl rand -base64 16
|
|
}
|
|
|
|
mapfile -d '' -t examples < <(find "${SERVICES_DIR}" -type f -name '*.env.example' -print0 | sort -z)
|
|
|
|
created=0
|
|
skipped=0
|
|
|
|
for example in "${examples[@]}"; do
|
|
target="${example%.example}"
|
|
if [[ -f "${target}" ]]; then
|
|
skipped=$((skipped + 1))
|
|
continue
|
|
fi
|
|
cp "${example}" "${target}"
|
|
created=$((created + 1))
|
|
done
|
|
|
|
mapfile -d '' -t targets < <(find "${SERVICES_DIR}" -type f -name '*.env' -print0)
|
|
|
|
declare -A generated
|
|
tokens="$(grep -hoE '__GENERATE_[A-Z0-9_]+__' "${targets[@]}" 2>/dev/null | sort -u || true)"
|
|
|
|
for token in ${tokens}; do
|
|
if [[ -z "${generated[${token}]:-}" ]]; then
|
|
generated[${token}]="$(random_value)"
|
|
fi
|
|
value="${generated[${token}]}"
|
|
for f in "${targets[@]}"; do
|
|
if grep -qF -- "${token}" "${f}" 2>/dev/null; then
|
|
sed -i "s#${token}#${value}#g" "${f}"
|
|
fi
|
|
done
|
|
done
|
|
|
|
echo "Created ${created} env file(s), left ${skipped} existing one(s) untouched."
|
|
|
|
remaining="$(grep -rlF 'CHANGEME_' "${targets[@]}" 2>/dev/null || true)"
|
|
if [[ -n "${remaining}" ]]; then
|
|
echo
|
|
echo "These files still need a value you must fill in by hand:"
|
|
echo "${remaining}"
|
|
fi
|