Files
2026-03-14 17:40:50 +00:00

77 lines
1.8 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
TARGET="${1:-preview}"
LOCAL_DIR="${2:-dist}"
FTP_ENV_FILE="${FTP_ENV_FILE:-.env.ftp}"
load_env_file() {
if [[ ! -f "$FTP_ENV_FILE" ]]; then
return
fi
set -a
# shellcheck disable=SC1090
source "$FTP_ENV_FILE"
set +a
}
resolve_base_remote_dir() {
if [[ -n "${FTP_REMOTE_DIR:-}" ]]; then
printf '%s\n' "${FTP_REMOTE_DIR%/}"
return
fi
if [[ -n "${FTP_URL:-}" && "$FTP_URL" =~ ^ftp://[^@:/]+@[^:/]+(:([0-9]+))?(/.*)?$ ]]; then
printf '%s\n' "${BASH_REMATCH[3]:-/www}"
return
fi
printf '%s\n' "/www"
}
set_target_env() {
local base_remote_dir
base_remote_dir="$(resolve_base_remote_dir)"
case "$TARGET" in
preview)
export PUBLIC_SITE_URL="${PUBLIC_SITE_URL_PREVIEW:-https://www.lelectronrare.fr/preview/}"
export FTP_REMOTE_DIR="${base_remote_dir}/preview"
;;
production|prod)
export PUBLIC_SITE_URL="${PUBLIC_SITE_URL_PROD:-${PUBLIC_SITE_URL:-https://www.lelectronrare.fr/}}"
export FTP_REMOTE_DIR="${base_remote_dir}"
;;
*)
echo "Unknown target: ${TARGET}. Use 'preview' or 'production'."
exit 1
;;
esac
unset FTP_URL
}
main() {
load_env_file
set_target_env
if [[ "${DEPLOY_TARGET_SKIP_BUILD:-0}" != "1" ]]; then
npm run build:external
else
echo "[deploy-ovh-ftp-target] Skipping build:external (already built)."
fi
# The root .htaccess contains root-scoped Apache rules (`/index.html`, `/_astro/`)
# that break the preview when uploaded inside `/preview`.
if [[ "$TARGET" == "preview" && -f "${LOCAL_DIR}/.htaccess" ]]; then
echo "[deploy-ovh-ftp-target] Removing .htaccess from preview payload."
rm -f "${LOCAL_DIR}/.htaccess"
fi
bash scripts/deploy-ovh-ftp.sh "$LOCAL_DIR"
}
main "$@"