41 lines
1.5 KiB
Bash
41 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
umask 077
|
|
|
|
readonly stage_dir="/www/server/xim-generated-users-20260902"
|
|
readonly avatar_dir="${stage_dir}/avatars"
|
|
readonly manifest_file="${stage_dir}/manifest.json"
|
|
readonly importer="${stage_dir}/import-generated-test-users"
|
|
readonly environment_file="/etc/xim-im.env"
|
|
readonly lock_file="/www/server/xim-generated-users-20260902.lock"
|
|
|
|
[[ "$(id -u)" == "0" ]] || { echo "Run as root" >&2; exit 1; }
|
|
[[ -d "${stage_dir}" && -d "${avatar_dir}" ]] || { echo "Staging directory is incomplete" >&2; exit 1; }
|
|
[[ -f "${manifest_file}" && -f "${importer}" && -f "${environment_file}" ]] || { echo "Required file is missing" >&2; exit 1; }
|
|
[[ "$(find "${avatar_dir}" -maxdepth 1 -type f -name 'avatar-*.png' | wc -l)" == "100" ]] || { echo "Expected exactly 100 PNG avatars" >&2; exit 1; }
|
|
|
|
exec 9>"${lock_file}"
|
|
flock -n 9 || { echo "Another generated-user import is running" >&2; exit 1; }
|
|
|
|
chmod 0755 "${importer}"
|
|
# shellcheck disable=SC1091
|
|
source "${environment_file}"
|
|
|
|
"${importer}" \
|
|
--confirm-database xim \
|
|
--confirm-bucket gz-1349751149 \
|
|
--manifest "${manifest_file}" \
|
|
--avatars-dir "${avatar_dir}"
|
|
|
|
readonly backup_dir="/www/backup/xim-generated-users-$(date -u +%Y%m%dT%H%M%SZ)"
|
|
"${importer}" \
|
|
--apply \
|
|
--confirm-database xim \
|
|
--confirm-bucket gz-1349751149 \
|
|
--manifest "${manifest_file}" \
|
|
--avatars-dir "${avatar_dir}" \
|
|
--backup-dir "${backup_dir}"
|
|
|
|
echo "Generated test-user import completed. Backup: ${backup_dir}"
|