31 lines
925 B
Bash
31 lines
925 B
Bash
#!/usr/bin/env bash
|
||
# 将 server/.env.example 中「server/.env 尚未出现的 KEY=」追加到 .env,不覆盖已有配置。
|
||
# 供 pull-and-restart / restart 调用,实现服务器零手动改 .env。
|
||
set +e
|
||
ROOT="${1:-}"
|
||
if [ -z "$ROOT" ]; then
|
||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
fi
|
||
ENVF="$ROOT/server/.env"
|
||
EX="$ROOT/server/.env.example"
|
||
[ -f "$EX" ] || exit 0
|
||
[ -f "$ENVF" ] || exit 0
|
||
|
||
while IFS= read -r raw || [ -n "$raw" ]; do
|
||
line="${raw#"${raw%%[![:space:]]*}"}"
|
||
line="${line%"${line##*[![:space:]]}"}"
|
||
case "$line" in
|
||
\#*|'') continue ;;
|
||
esac
|
||
case "$line" in
|
||
[A-Za-z_][A-Za-z0-9_]*=*)
|
||
key="${line%%=*}"
|
||
if ! grep -qE "^[[:space:]]*${key}=" "$ENVF" 2>/dev/null; then
|
||
printf '\n# auto from .env.example (%s)\n%s\n' "$(date +%Y-%m-%d)" "$line" >> "$ENVF"
|
||
echo "merge-server-env: 已追加 $key -> server/.env" >&2
|
||
fi
|
||
;;
|
||
esac
|
||
done < "$EX"
|
||
exit 0
|