#!/usr/bin/env bash set -euo pipefail env_file="${1:-.env}" defaults_file="${2:-.env.example}" if [ ! -f "$env_file" ] || [ ! -f "$defaults_file" ]; then exit 0 fi added=0 while IFS= read -r line || [ -n "$line" ]; do trimmed="${line#"${line%%[![:space:]]*}"}" if [ -z "$trimmed" ] || [[ "$trimmed" == \#* ]] || [[ "$trimmed" != *=* ]]; then continue fi key="${trimmed%%=*}" if ! grep -qE "^${key}=" "$env_file"; then if [ "$added" -eq 0 ]; then { echo echo "# Added from .env.example on $(date +%F)" } >> "$env_file" fi echo "$trimmed" >> "$env_file" added=$((added + 1)) fi done < "$defaults_file" if [ "$added" -gt 0 ]; then echo "merged $added missing env defaults into $env_file" fi