[ADDED] Script cversadm_token.sh para gestión de tokens de control de versiones
- Implementa interfaz mediante dialog para seleccionar plataforma (Github, Gitlab, Forgejo) - Solicita token mediante entrada segura (oculta) - Encripta token con SOPS y lo guarda en ~/.developers/[plataforma].sops.yaml - Añade mensajes en español en developers.es 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
397569acbe
commit
41f786683b
2 changed files with 188 additions and 0 deletions
173
bin/cversadm_token.sh
Executable file
173
bin/cversadm_token.sh
Executable file
|
@ -0,0 +1,173 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Script: cversadm_token.sh
|
||||||
|
# Description: Administrador de tokens para plataformas de control de versiones
|
||||||
|
# Modified: 2025/03/15
|
||||||
|
# [Author] Cortana Rosero One <cortana@rosero.one>
|
||||||
|
# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||||
|
#
|
||||||
|
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>]
|
||||||
|
#
|
||||||
|
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||||
|
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||||
|
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||||
|
# o (a su elección) cualquier versión posterior.
|
||||||
|
#
|
||||||
|
# Este programa se distribuye con la esperanza de que sea útil,
|
||||||
|
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||||
|
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||||
|
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||||
|
#
|
||||||
|
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||||
|
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Configuración inicial
|
||||||
|
DEVELOPERS_DIR="$HOME/.developers"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
BIN_HOME="${SCRIPT_DIR}/.."
|
||||||
|
BIN_BASE="bin"
|
||||||
|
BIN_LIBS="lib"
|
||||||
|
BIN_MESG="msg"
|
||||||
|
|
||||||
|
# Importar bibliotecas necesarias
|
||||||
|
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||||
|
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib"
|
||||||
|
|
||||||
|
# Cargar mensajes en español
|
||||||
|
load_messages "${BIN_HOME}" "${BIN_MESG}" "es" "developers"
|
||||||
|
|
||||||
|
# Variables globales
|
||||||
|
title="MRDevs Tools"
|
||||||
|
apps_title="${cvmsg_000}"
|
||||||
|
|
||||||
|
# Función para verificar si SOPS está instalado
|
||||||
|
check_sops_installed() {
|
||||||
|
if ! command -v sops &> /dev/null; then
|
||||||
|
echo "Error: SOPS no está instalado. Por favor, instale SOPS para continuar."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Función para asegurar que el directorio .developers existe
|
||||||
|
ensure_developers_dir() {
|
||||||
|
if [ ! -d "$DEVELOPERS_DIR" ]; then
|
||||||
|
mkdir -p "$DEVELOPERS_DIR"
|
||||||
|
chmod 700 "$DEVELOPERS_DIR"
|
||||||
|
echo "${cvmsg_008} $DEVELOPERS_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Función para seleccionar la plataforma de control de versiones
|
||||||
|
select_platform() {
|
||||||
|
local options="1 ${cvmsg_010} 2 ${cvmsg_011} 3 ${cvmsg_012}"
|
||||||
|
|
||||||
|
dialog_input_menu "${cvmsg_001}" "${cvmsg_002}" "$options" 12
|
||||||
|
|
||||||
|
if [ $codex -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $value in
|
||||||
|
1) echo "github" ;;
|
||||||
|
2) echo "gitlab" ;;
|
||||||
|
3) echo "forgejo" ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Función para solicitar el token
|
||||||
|
request_token() {
|
||||||
|
local platform=$1
|
||||||
|
local platform_name=""
|
||||||
|
|
||||||
|
case $platform in
|
||||||
|
"github") platform_name="${cvmsg_010}" ;;
|
||||||
|
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||||
|
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dialog_input_pass "${cvmsg_003}" "${cvmsg_004} $platform_name
|
||||||
|
${cvmsg_005}"
|
||||||
|
|
||||||
|
if [ $codex -ne 0 ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$value"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Función para guardar el token encriptado con SOPS
|
||||||
|
save_token() {
|
||||||
|
local platform=$1
|
||||||
|
local token=$2
|
||||||
|
local filename="${DEVELOPERS_DIR}/${platform}.sops.yaml"
|
||||||
|
|
||||||
|
# Crear archivo YAML temporal con el token
|
||||||
|
local temp_file=$(mktemp)
|
||||||
|
echo "token: $token" > "$temp_file"
|
||||||
|
|
||||||
|
# Encriptar el archivo con SOPS
|
||||||
|
sops --encrypt "$temp_file" > "$filename"
|
||||||
|
local result=$?
|
||||||
|
|
||||||
|
# Eliminar archivo temporal
|
||||||
|
rm "$temp_file"
|
||||||
|
|
||||||
|
# Establecer permisos adecuados
|
||||||
|
if [ $result -eq 0 ]; then
|
||||||
|
chmod 600 "$filename"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
|
||||||
|
# Función principal
|
||||||
|
main() {
|
||||||
|
# Verificar requisitos
|
||||||
|
check_sops_installed
|
||||||
|
ensure_developers_dir
|
||||||
|
|
||||||
|
# Seleccionar plataforma
|
||||||
|
platform=$(select_platform)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
clear
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Solicitar token
|
||||||
|
token=$(request_token "$platform")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
clear
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Guardar token
|
||||||
|
save_token "$platform" "$token"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
local platform_name=""
|
||||||
|
case $platform in
|
||||||
|
"github") platform_name="${cvmsg_010}" ;;
|
||||||
|
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||||
|
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dialog_error_box "${cvmsg_009}" "${cvmsg_006} $platform_name"
|
||||||
|
else
|
||||||
|
local platform_name=""
|
||||||
|
case $platform in
|
||||||
|
"github") platform_name="${cvmsg_010}" ;;
|
||||||
|
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||||
|
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dialog_error_box "${head_error}" "${cvmsg_007} $platform_name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clear
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ejecutar función principal
|
||||||
|
main
|
|
@ -40,3 +40,18 @@ dvmsg_105="Opciones:"
|
||||||
dvmsg_106=" --help Muestra este mensaje de ayuda."
|
dvmsg_106=" --help Muestra este mensaje de ayuda."
|
||||||
dvmsg_107=" --version Muestra la versión del script."
|
dvmsg_107=" --version Muestra la versión del script."
|
||||||
|
|
||||||
|
# Mensajes para cversadm_token.sh
|
||||||
|
cvmsg_000="ADMINISTRADOR DE TOKENS DE CONTROL DE VERSIONES"
|
||||||
|
cvmsg_001="Seleccione plataforma de control de versiones"
|
||||||
|
cvmsg_002="Elija la plataforma para la que desea configurar el token de acceso"
|
||||||
|
cvmsg_003="Token de acceso"
|
||||||
|
cvmsg_004="Introduzca el token de acceso personal para"
|
||||||
|
cvmsg_005="El token se utilizará para operaciones de autenticación"
|
||||||
|
cvmsg_006="Token guardado correctamente para"
|
||||||
|
cvmsg_007="Error al guardar el token para"
|
||||||
|
cvmsg_008="Carpeta de configuración creada:"
|
||||||
|
cvmsg_009="Seleccione una opción"
|
||||||
|
cvmsg_010="Github"
|
||||||
|
cvmsg_011="Gitlab"
|
||||||
|
cvmsg_012="Forgejo"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue