Files
kefu/im/deploy/xim_import_generated_users.sh
T
2026-09-03 08:38:17 +08:00

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}"