Refactor code structure for improved readability and maintainability
This commit is contained in:
+46
-20
@@ -2,11 +2,16 @@
|
||||
# register.sh — registra un nuevo bot en el servidor Matrix via Synapse admin API
|
||||
#
|
||||
# Uso:
|
||||
# ./dev-scripts/register.sh <username> [displayname] [env-var-name]
|
||||
# ./dev-scripts/register.sh <username> [displayname]
|
||||
#
|
||||
# Ejemplos:
|
||||
# ./dev-scripts/register.sh assistant-bot "Assistant" MATRIX_TOKEN_ASSISTANT
|
||||
# ./dev-scripts/register.sh devops-bot "DevOps Agent" MATRIX_TOKEN_DEVOPS
|
||||
# ./dev-scripts/register.sh assistant-bot "Assistant"
|
||||
# ./dev-scripts/register.sh devops-bot "DevOps Agent"
|
||||
#
|
||||
# Genera y guarda en .env:
|
||||
# MATRIX_TOKEN_<NORM>=... (access token)
|
||||
# MATRIX_PASSWORD_<NORM>=... (password para UIA)
|
||||
# PICKLE_KEY_<NORM>=... (E2EE crypto store key)
|
||||
#
|
||||
# Requiere en .env:
|
||||
# MATRIX_ADMIN_TOKEN=syt_...
|
||||
@@ -19,12 +24,14 @@ need_arg "${1:-}"
|
||||
|
||||
USERNAME="$1"
|
||||
DISPLAYNAME="${2:-$USERNAME}"
|
||||
ENV_VAR="${3:-MATRIX_TOKEN_$(echo "$USERNAME" | tr '[:lower:]-' '[:upper:]_' | sed 's/_BOT$//')}"
|
||||
NORM="$(normalize_id "$USERNAME")"
|
||||
ENV_VAR="MATRIX_TOKEN_${NORM}"
|
||||
|
||||
[[ -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}..."
|
||||
dim " Env var prefix: ${NORM}"
|
||||
echo ""
|
||||
|
||||
# Ejecutar cmd/register y capturar su output completo
|
||||
@@ -37,23 +44,42 @@ OUTPUT=$("$GO" run ./cmd/register \
|
||||
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"
|
||||
# ── Parsear y guardar cada variable en .env ──────────────────────────────
|
||||
|
||||
TOKEN=$(echo "$TOKEN_LINE" | cut -d= -f2-)
|
||||
[[ -n "$TOKEN" ]] || fail "Token vacío para $ENV_VAR"
|
||||
save_env_var() {
|
||||
local key="$1" value="$2"
|
||||
[[ -n "$value" ]] || return
|
||||
|
||||
# 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
|
||||
# Quote values with spaces
|
||||
if [[ "$value" == *" "* ]]; then
|
||||
value="\"${value}\""
|
||||
fi
|
||||
|
||||
if grep -q "^${key}=" .env; then
|
||||
awk -v key="$key" -v val="$value" \
|
||||
'index($0, key "=") == 1 { print key "=" val; next } { print }' \
|
||||
.env > /tmp/_env_tmp && mv /tmp/_env_tmp .env
|
||||
ok "$key actualizado en .env"
|
||||
else
|
||||
printf '%s=%s\n' "$key" "$value" >> .env
|
||||
ok "$key añadido a .env"
|
||||
fi
|
||||
}
|
||||
|
||||
# Extract parseable lines from output
|
||||
TOKEN=$(echo "$OUTPUT" | grep "^${ENV_VAR}=" | cut -d= -f2-)
|
||||
PASSWORD=$(echo "$OUTPUT" | grep "^MATRIX_PASSWORD_${NORM}=" | cut -d= -f2-)
|
||||
PICKLE_KEY=$(echo "$OUTPUT" | grep "^PICKLE_KEY_${NORM}=" | cut -d= -f2-)
|
||||
|
||||
[[ -n "$TOKEN" ]] || fail "No se encontró '${ENV_VAR}=' en el output"
|
||||
|
||||
save_env_var "$ENV_VAR" "$TOKEN"
|
||||
save_env_var "MATRIX_PASSWORD_${NORM}" "$PASSWORD"
|
||||
save_env_var "PICKLE_KEY_${NORM}" "$PICKLE_KEY"
|
||||
|
||||
echo ""
|
||||
dim " Arranca el bot con: ./dev-scripts/start.sh $USERNAME"
|
||||
echo -e "${YLW}Siguientes pasos:${RST}"
|
||||
echo ""
|
||||
echo -e " ${DIM}1. ./dev-scripts/verify.sh $USERNAME${RST} # genera cross-signing keys E2EE"
|
||||
echo -e " ${DIM}2. ./dev-scripts/start.sh $USERNAME${RST} # arranca el agente"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user