fix first online resevation
This commit is contained in:
Executable
+112
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
ENV_FILE="${ROOT_DIR}/.env.local"
|
||||
SECRET_KEY="${CLERK_SECRET_KEY:-}"
|
||||
PUBLISHABLE_KEY="${NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY:-${CLERK_PUBLISHABLE_KEY:-}}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
scripts/setup-clerk-keys.sh --secret-key sk_test_xxx --publishable-key pk_test_xxx
|
||||
|
||||
Options:
|
||||
--secret-key VALUE Clerk secret key to store as CLERK_SECRET_KEY
|
||||
--publishable-key VALUE Clerk publishable key to store as NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
|
||||
--env-file PATH Target env file (default: .env.local)
|
||||
--help Show this message
|
||||
|
||||
Notes:
|
||||
- Real Clerk keys are created by Clerk, not generated offline by this script.
|
||||
- Find them in the Clerk Dashboard > API Keys.
|
||||
EOF
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--secret-key)
|
||||
SECRET_KEY="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
--publishable-key)
|
||||
PUBLISHABLE_KEY="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
--env-file)
|
||||
ENV_FILE="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
--help|-h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument: $1" >&2
|
||||
usage >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
prompt_if_missing() {
|
||||
local var_name="$1"
|
||||
local label="$2"
|
||||
local current_value="$3"
|
||||
|
||||
if [[ -n "$current_value" ]]; then
|
||||
printf '%s' "$current_value"
|
||||
return 0
|
||||
fi
|
||||
|
||||
read -r -p "${label}: " current_value
|
||||
printf '%s' "$current_value"
|
||||
}
|
||||
|
||||
SECRET_KEY="$(prompt_if_missing "CLERK_SECRET_KEY" "Enter your Clerk secret key (sk_test_... or sk_live_...)" "$SECRET_KEY")"
|
||||
PUBLISHABLE_KEY="$(prompt_if_missing "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY" "Enter your Clerk publishable key (pk_test_... or pk_live_...)" "$PUBLISHABLE_KEY")"
|
||||
|
||||
validate_prefix() {
|
||||
local value="$1"
|
||||
local name="$2"
|
||||
local prefix_a="$3"
|
||||
local prefix_b="$4"
|
||||
|
||||
if [[ -z "$value" ]]; then
|
||||
echo "${name} is required." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$value" != "${prefix_a}"* && "$value" != "${prefix_b}"* ]]; then
|
||||
echo "${name} must start with ${prefix_a} or ${prefix_b}." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
validate_prefix "$SECRET_KEY" "CLERK_SECRET_KEY" "sk_test_" "sk_live_"
|
||||
validate_prefix "$PUBLISHABLE_KEY" "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY" "pk_test_" "pk_live_"
|
||||
|
||||
mkdir -p "$(dirname "$ENV_FILE")"
|
||||
touch "$ENV_FILE"
|
||||
|
||||
upsert_env_var() {
|
||||
local file="$1"
|
||||
local key="$2"
|
||||
local value="$3"
|
||||
local escaped_value
|
||||
escaped_value="$(printf '%s' "$value" | sed 's/[&|]/\\&/g')"
|
||||
|
||||
if grep -q "^${key}=" "$file"; then
|
||||
sed -i "s|^${key}=.*|${key}=${escaped_value}|" "$file"
|
||||
else
|
||||
printf '\n%s=%s\n' "$key" "$value" >> "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
upsert_env_var "$ENV_FILE" "CLERK_SECRET_KEY" "$SECRET_KEY"
|
||||
upsert_env_var "$ENV_FILE" "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY" "$PUBLISHABLE_KEY"
|
||||
|
||||
echo "Updated ${ENV_FILE}"
|
||||
echo " CLERK_SECRET_KEY=${SECRET_KEY:0:10}..."
|
||||
echo " NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=${PUBLISHABLE_KEY:0:10}..."
|
||||
Reference in New Issue
Block a user