[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_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