39 lines
952 B
Bash
Executable File
39 lines
952 B
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
ROOT=$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd)
|
|
ENV_FILE="$ROOT/.env.load"
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "Missing $ENV_FILE. Run scripts/ensure-local-load-env.sh first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
for command in openssl perl; do
|
|
if ! command -v "$command" >/dev/null 2>&1; then
|
|
echo "Required command is unavailable: $command" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
new_metrics_token=$(openssl rand -hex 32)
|
|
temporary=$(mktemp "${ENV_FILE}.rotate.XXXXXX")
|
|
trap 'rm -f "$temporary"' EXIT HUP INT TERM
|
|
chmod 600 "$temporary"
|
|
|
|
NEW_METRICS_TOKEN=$new_metrics_token \
|
|
perl -pe '
|
|
s/^METRICS_TOKEN=.*/METRICS_TOKEN=$ENV{NEW_METRICS_TOKEN}/;
|
|
' "$ENV_FILE" >"$temporary"
|
|
|
|
if cmp -s "$ENV_FILE" "$temporary"; then
|
|
echo "METRICS_TOKEN is missing from $ENV_FILE." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mv "$temporary" "$ENV_FILE"
|
|
chmod 600 "$ENV_FILE"
|
|
trap - EXIT HUP INT TERM
|
|
|
|
echo "The isolated load-profile metrics token was rotated without printing it."
|