60 lines
1.9 KiB
Bash
Executable File
60 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# register.sh — registra un nuevo bot en el servidor Matrix via Synapse admin API
|
|
#
|
|
# Uso:
|
|
# ./dev-scripts/register.sh <username> [displayname] [env-var-name]
|
|
#
|
|
# Ejemplos:
|
|
# ./dev-scripts/register.sh assistant-bot "Assistant" MATRIX_TOKEN_ASSISTANT
|
|
# ./dev-scripts/register.sh devops-bot "DevOps Agent" MATRIX_TOKEN_DEVOPS
|
|
#
|
|
# Requiere en .env:
|
|
# MATRIX_ADMIN_TOKEN=syt_...
|
|
# MATRIX_HOMESERVER=https://...
|
|
|
|
source "$(dirname "$0")/_common.sh"
|
|
load_env
|
|
|
|
need_arg "${1:-}"
|
|
|
|
USERNAME="$1"
|
|
DISPLAYNAME="${2:-$USERNAME}"
|
|
ENV_VAR="${3:-MATRIX_TOKEN_$(echo "$USERNAME" | tr '[:lower:]-' '[:upper:]_' | sed 's/_BOT$//')}"
|
|
|
|
[[ -n "${MATRIX_ADMIN_TOKEN:-}" ]] || fail "MATRIX_ADMIN_TOKEN no está en .env"
|
|
[[ -n "${MATRIX_HOMESERVER:-}" ]] || fail "MATRIX_HOMESERVER no está en .env"
|
|
|
|
info "Registrando @${USERNAME}:${MATRIX_SERVER_NAME:-$MATRIX_HOMESERVER}..."
|
|
echo ""
|
|
|
|
# Ejecutar cmd/register y capturar su output completo
|
|
OUTPUT=$("$GO" run ./cmd/register \
|
|
--homeserver "$MATRIX_HOMESERVER" \
|
|
--username "$USERNAME" \
|
|
--displayname "$DISPLAYNAME" \
|
|
--env-var "$ENV_VAR" 2>&1) || fail "cmd/register falló:\n$OUTPUT"
|
|
|
|
echo "$OUTPUT"
|
|
echo ""
|
|
|
|
# Extraer la línea ENV_VAR=token del output
|
|
TOKEN_LINE=$(echo "$OUTPUT" | grep "^${ENV_VAR}=")
|
|
[[ -n "$TOKEN_LINE" ]] || fail "No se encontró '${ENV_VAR}=' en el output de cmd/register"
|
|
|
|
TOKEN=$(echo "$TOKEN_LINE" | cut -d= -f2-)
|
|
[[ -n "$TOKEN" ]] || fail "Token vacío para $ENV_VAR"
|
|
|
|
# Actualizar .env — reemplazar si ya existe, añadir si no
|
|
if grep -q "^${ENV_VAR}=" .env; then
|
|
awk -v key="$ENV_VAR" -v val="$TOKEN" \
|
|
'index($0, key "=") == 1 { print key "=" val; next } { print }' \
|
|
.env > /tmp/_env_tmp && mv /tmp/_env_tmp .env
|
|
ok "$ENV_VAR actualizado en .env"
|
|
else
|
|
printf '\n%s=%s\n' "$ENV_VAR" "$TOKEN" >> .env
|
|
ok "$ENV_VAR añadido a .env"
|
|
fi
|
|
|
|
echo ""
|
|
dim " Arranca el bot con: ./dev-scripts/start.sh $USERNAME"
|