54 lines
1.8 KiB
Bash
Executable File
54 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# Deploie le contenu de output/ (voir "make export") sur l'app YunoHost.
|
|
# Voir README.md pour le detail des parametres et l'authentification par cle SSH.
|
|
#
|
|
# Le compte SSH d'une app "Custom Webapp" YunoHost est en general limite a
|
|
# SFTP (ForceCommand internal-sftp) et chroote dans son propre dossier home
|
|
# (/var/www/<REMOTE_USER>) : rsync ne fonctionne donc pas (il a besoin
|
|
# d'executer un shell distant), et le chemin distant doit etre relatif a la
|
|
# racine du chroot, pas un chemin absolu du systeme de fichiers du serveur.
|
|
|
|
set -eu
|
|
|
|
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
|
PROJECT_ROOT="$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)"
|
|
OUTPUT_DIR="$PROJECT_ROOT/output"
|
|
|
|
if [ ! -f "${PROJECT_ROOT}/.env" ]; then
|
|
echo "Aucun .env trouve : lance 'make config' puis renseigne-le (voir .env.example)." >&2
|
|
exit 1
|
|
fi
|
|
# shellcheck disable=SC1090,SC1091
|
|
. "${PROJECT_ROOT}/.env"
|
|
|
|
if [ ! -f "${OUTPUT_DIR}/index.html" ]; then
|
|
echo "output/ est vide ou incomplet : lance d'abord 'make export' (ou le bouton Export de l'editeur)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${REMOTE_HOST:-}" ] || [ -z "${REMOTE_USER:-}" ]; then
|
|
echo "REMOTE_HOST et REMOTE_USER doivent etre renseignes dans .env (voir .env.example)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
REMOTE_PORT="${REMOTE_PORT:-22}"
|
|
# Chemin relatif a la racine du chroot SFTP (pas le chemin absolu serveur).
|
|
REMOTE_PATH="${REMOTE_PATH:-/www/}"
|
|
|
|
SCP="scp"
|
|
|
|
if [ -n "${REMOTE_PASSWORD:-}" ]; then
|
|
if ! command -v sshpass > /dev/null 2>&1; then
|
|
echo "REMOTE_PASSWORD est defini dans .env mais sshpass n'est pas installe (apt install sshpass)." >&2
|
|
exit 1
|
|
fi
|
|
SCP="sshpass -p ${REMOTE_PASSWORD} scp"
|
|
fi
|
|
|
|
${SCP} -P "${REMOTE_PORT}" \
|
|
"${OUTPUT_DIR}/index.html" \
|
|
"${OUTPUT_DIR}/style.css" \
|
|
"${OUTPUT_DIR}/app.js" \
|
|
"${OUTPUT_DIR}/config.json" \
|
|
"${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"
|