Compare commits
	
		
			20 commits
		
	
	
		
			7bb290ef20
			...
			f4568ef57d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f4568ef57d | |||
| f6f2ebcaa0 | |||
| f415e54d34 | |||
| 1b4993ea4b | |||
| 31735062c2 | |||
| e67b6fc5de | |||
| d5b3b1bc31 | |||
| 64c32003fe | |||
| d405113803 | |||
| 60a8a86ca2 | |||
| 7114c43475 | |||
| d32832b091 | |||
| c51bdfdf9f | |||
| efb5aa5d2a | |||
| d3bad69f02 | |||
| 78c5a03f17 | |||
| 57f59ddffe | |||
| 12495ab53e | |||
| 60d0d3337d | |||
| 074643e21d | 
					 49 changed files with 1719 additions and 569 deletions
				
			
		
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -12,26 +12,21 @@ | |||
| !bin/config/ | ||||
| !bin/ansible/ | ||||
| !inventory/ | ||||
| !templates/ | ||||
| !sops/ | ||||
| !proyectos/ | ||||
| !projects/ | ||||
| 
 | ||||
| # Permitir el seguimiento de archivos específicos | ||||
| # !archivo1.txt | ||||
| !README.md | ||||
| !CLUADE.md | ||||
| !.gitignore | ||||
| 
 | ||||
| # Ignorar archivos específicos | ||||
| CLAUDE.md | ||||
| bin/config/rates/ | ||||
| 
 | ||||
| # Permitir archivos en carpetas específicas | ||||
| # !carpeta1/*.txt | ||||
| !bin/* | ||||
| !bin/lib/* | ||||
| !bin/msg/* | ||||
| !bin/config/* | ||||
| !bin/config/** | ||||
| !bin/ansible/** | ||||
| !inventory/** | ||||
| !templates/** | ||||
| !sops/*.yaml | ||||
|  |  | |||
|  | @ -18,13 +18,17 @@ | |||
| 
 | ||||
| ## Development Practices | ||||
| - Use `bin/lib/base.lib` for common functions | ||||
| - Use `bin/lib/developers.lib` for developers functions | ||||
| - Use `bin/lib/clonsole.lib` for dialog functions | ||||
| - Message files stored in `bin/msg/` (multilingual support) | ||||
| - Configuration in `bin/config/` directory | ||||
| - Use git commit messages with prefixes: [ADDED], [IMPROVED], [FIXED], [SOPS] | ||||
| - Use git commit messages with prefixes: [ADDED], [IMPROVED], [FIXED], [SOPS], [INIT] | ||||
| - Prefer podman over docker for container management | ||||
| - All shell scripts (.sh) and Python scripts (.py) must be placed in the `bin/` directory unless explicitly specified otherwise | ||||
| 
 | ||||
| ## Authorship Policy | ||||
| - Use `bin/config/python.header` how example to python comment header | ||||
| - Use `bin/config/bash.header` how example to bash comment header | ||||
| - For new projects created by Claude Code, use author: "Cortana Rosero One <cortana@rosero.one>" | ||||
| - Include reference indicating generation by Claude Code and the version used | ||||
| - Example header comment: | ||||
|  |  | |||
|  | @ -38,10 +38,8 @@ bin/update.sh | |||
| 
 | ||||
| | Comando | Descripción | | ||||
| |---------|-------------| | ||||
| | `bin/bootstrap.sh` | Instala herramientas básicas y configura la gestión de contenedores | | ||||
| | `bin/bootstrap.sh --oathtool` | Instala únicamente oathtool (herramienta para TOTP/HOTP) | | ||||
| | `bin/bootstrap.sh --zbar` | Instala únicamente zbar (herramienta para lectura de códigos QR) | | ||||
| | `bin/update.sh` | Actualiza el entorno de desarrollo con las últimas funcionalidades | | ||||
| | `bin/bootstrap.sh` | Instala herramientas básicas (incluyendo oathtool y zbar) y configura la gestión de contenedores | | ||||
| | `bin/update.sh` | Actualiza el entorno de desarrollo y herramientas (incluyendo oathtool y zbar) | | ||||
| | `bin/npm_install.sh` | Instala NodeJS y npm de forma interactiva | | ||||
| | `bin/project_new.sh` | Crea un nuevo proyecto con estructura estandarizada según el tipo seleccionado | | ||||
| 
 | ||||
|  | @ -76,6 +74,7 @@ bin/update.sh | |||
| 
 | ||||
| | Comando | Descripción | | ||||
| |---------|-------------| | ||||
| | `bin/qr_secret.sh` | Extrae secretos de imágenes QR y los guarda encriptados con SOPS | | ||||
| | `bin/vpn_install.sh` | Instala el cliente Pritunl VPN | | ||||
| | `bin/vpn_install.sh --update` | Actualiza el cliente VPN a la última versión | | ||||
| | `bin/vpn_users.sh` | Gestiona usuarios de la VPN | | ||||
|  |  | |||
							
								
								
									
										115
									
								
								bin/bootstrap.sh
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								bin/bootstrap.sh
									
									
									
									
									
								
							|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # bootstrap.sh | ||||
| # Script: bootstrap.sh | ||||
| # Description: Script para bootstrap.sh | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/15 16:30:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,17 +21,34 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| load_bootstrap_msg() { | ||||
| 
 | ||||
|  | @ -48,7 +69,6 @@ install() { | |||
| 	local LIBRARY=$2 | ||||
| 	local MESSAGES=$3 | ||||
|     local INSTALL_LANG=$4 | ||||
|     local PACKAGE_ONLY=$5  # Paquete específico a instalar (opcional) | ||||
| 
 | ||||
|     local PYTHON_PACKAGE=python3 | ||||
|     local GIT_PACKAGE=git | ||||
|  | @ -75,32 +95,6 @@ install() { | |||
| 	# Load bootstrap messages | ||||
| 	load_bootstrap_msg $BIN_PATH $MESSAGES $INSTALL_LANG | ||||
| 
 | ||||
|     # Si se especificó un paquete específico, instalar solo ese | ||||
|     if [ -n "$PACKAGE_ONLY" ]; then | ||||
|         case "$PACKAGE_ONLY" in | ||||
|             "oathtool") | ||||
|                 # Instalar oathtool | ||||
|                 command_installed $OATHTOOL_PACKAGE | ||||
|                 if [ $? -ne 0 ]; then | ||||
|                     oathtool_install | ||||
|                 fi | ||||
|                 return 0 | ||||
|                 ;; | ||||
|             "zbar") | ||||
|                 # Instalar zbar | ||||
|                 command_installed $ZBAR_PACKAGE | ||||
|                 if [ $? -ne 0 ]; then | ||||
|                     zbar_install | ||||
|                 fi | ||||
|                 return 0 | ||||
|                 ;; | ||||
|             *) | ||||
|                 echo "Paquete '$PACKAGE_ONLY' no reconocido o no soportado." | ||||
|                 return 1 | ||||
|                 ;; | ||||
|         esac | ||||
|     fi | ||||
| 
 | ||||
| 	# Install wget from OS Packages | ||||
| 	command_installed $WGET_PACKAGE | ||||
| 	if [ $? -ne 0 ] | ||||
|  | @ -189,40 +183,29 @@ install() { | |||
| 	  echo "$domsg_005" | ||||
| 	fi | ||||
| 	 | ||||
| 	# Install oathtool if not already installed | ||||
| 	command_installed oathtool | ||||
| 	if [ $? -ne 0 ] | ||||
| 	then | ||||
| 	  echo "Instalando oathtool..." | ||||
| 	  oathtool_install | ||||
| 	fi | ||||
| 	 | ||||
| 	# Install zbar if not already installed | ||||
| 	command_installed zbar-tools | ||||
| 	if [ $? -ne 0 ] | ||||
| 	then | ||||
| 	  echo "Instalando zbar..." | ||||
| 	  zbar_install | ||||
| 	fi | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| # Load messages | ||||
| load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG | ||||
| 
 | ||||
| # Procesar argumentos | ||||
| PACKAGE_TO_INSTALL="" | ||||
| 
 | ||||
| if [ $# -ge 1 ]; then | ||||
|   case "$1" in | ||||
|     "--oathtool") | ||||
|       PACKAGE_TO_INSTALL="oathtool" | ||||
|       display_devstools_header "- Instalación de oathtool" | ||||
|       ;; | ||||
|     "--zbar") | ||||
|       PACKAGE_TO_INSTALL="zbar" | ||||
|       display_devstools_header "- Instalación de zbar" | ||||
|       ;; | ||||
|     *) | ||||
| # Display Headers | ||||
| display_devstools_header "- $bomsg_000" | ||||
|       ;; | ||||
|   esac | ||||
| else | ||||
|   display_devstools_header "- $bomsg_000" | ||||
| fi | ||||
| 
 | ||||
| # Run install with sudo | ||||
| sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG '$PACKAGE_TO_INSTALL'" | ||||
| result=$? | ||||
| 
 | ||||
| # Run install ansible with regular user | ||||
| #if [ $result -eq 0 ] | ||||
| #then | ||||
|   # Load bootstrap bash library | ||||
| #  source $BIN_HOME/$BIN_LIBS/bootstrap.lib | ||||
| #  ansible_install | ||||
| #fi | ||||
| # Run install with sudo (sin parámetros específicos) | ||||
| sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG" | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # cortana_install.sh | ||||
| # Modified: 2024/12/01 15:27:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # Script: claude_install.sh | ||||
| # Description: Script para instalar o desinstalar Anthropoc Claude Code con npm | ||||
| # Created:   2024/12/01 15:27:00 | ||||
| # Modified:  2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -19,28 +23,37 @@ | |||
| 
 | ||||
| # Script para instalar o desinstalar Anthropoc Claude Code con npm | ||||
| # Uso: | ||||
| #   ./script.sh          -> Instalación | ||||
| #   ./script.sh -u       -> Desinstalación | ||||
| #   ./claude_install.sh          -> Instalación | ||||
| #   ./claude_install -u          -> Desinstalación | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.1 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| 
 | ||||
| # Verificar que 'dialog' esté instalado | ||||
| if ! command -v dialog &>/dev/null; then | ||||
|   echo "${npm_001}" | ||||
|  | @ -50,10 +63,10 @@ fi | |||
| # Verificar que 'npm' esté instalado | ||||
| if ! command -v npm &>/dev/null; then | ||||
|   dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_022}" 7 50 | ||||
|   exit 1 | ||||
|   ${BIN_HOME}/${BIN_BASE}/npm_install.sh | ||||
| fi | ||||
| 
 | ||||
| # Función para preparar pre-requisitos para instalación de Cortana | ||||
| # Función para preparar pre-requisitos para instalación de Claude Code | ||||
| pre_anthropic() { | ||||
|   # First, save a list of your existing global packages for later migration | ||||
|   npm list -g --depth=0 > ~/npm-global-packages.txt | ||||
|  | @ -95,7 +108,7 @@ pre_anthropic() { | |||
| 
 | ||||
| # Función para instalar Anthropoc Claude Code | ||||
| install_anthropic() { | ||||
|   dialog --backtitle "${title}" --title "${npm_018} ${npm_000} ${npm_000_1}" --msgbox "${npm_023}" 7 60 | ||||
|   dialog --backtitle "${title}" --title "${npm_018}" --msgbox "${npm_023}" 7 60 | ||||
|   # Ejecutar la instalación | ||||
|   pre_anthropic | ||||
|   npm install -g @anthropic-ai/claude-code | ||||
|  | @ -109,7 +122,7 @@ install_anthropic() { | |||
| 
 | ||||
| # Función para desinstalar Anthropoc Claude Code | ||||
| uninstall_anthropic() { | ||||
|   dialog --backtitle "${title}" --title "${npm_026} ${npm_000} ${npm_000_1}" --msgbox "${npm_027}" 7 60 | ||||
|   dialog --backtitle "${title}" --title "${npm_026}" --msgbox "${npm_027}" 7 60 | ||||
|   # Ejecutar la desinstalación | ||||
|   npm uninstall -g @anthropic-ai/claude-code | ||||
|   if [[ $? -eq 0 ]]; then | ||||
|  | @ -127,6 +140,7 @@ if [[ "$1" == "-u" ]]; then | |||
|     uninstall_anthropic | ||||
|   else | ||||
|     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
| else | ||||
|  | @ -135,7 +149,11 @@ else | |||
|     install_anthropic | ||||
|   else | ||||
|     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
| fi | ||||
| 
 | ||||
| # Limpiar consola | ||||
| clear | ||||
| 
 | ||||
							
								
								
									
										23
									
								
								bin/config/bash.head
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								bin/config/bash.head
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: $SCRIPT_NAME | ||||
| # Description: $DESCRIPTION | ||||
| # Created:  $CREATED_DATE | ||||
| # Modified: $MODIFIED_DATE | ||||
| # [Author] $AUTHOR | ||||
| # [Generated] $GENERATED_BY | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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/>. | ||||
							
								
								
									
										29
									
								
								bin/config/bash.variables
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								bin/config/bash.variables
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
|  | @ -1 +1 @@ | |||
| proyectos | ||||
| projects | ||||
|  |  | |||
							
								
								
									
										1
									
								
								bin/config/rates/backend.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/backend.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 57.73 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/bash.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/bash.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 23.64 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/cloud.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/cloud.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 51.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/data.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/data.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 56.81 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/devops.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/devops.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 59.11 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/dotnet.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/dotnet.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 49.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/frontend.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/frontend.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 41.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/fullstack.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/fullstack.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 88.66 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/java.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/java.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 49.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/ml.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/ml.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 49.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/mobile.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/mobile.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 47.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/odoo.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/odoo.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 20.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/php.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/php.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 49.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/python.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/python.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 49.00 | ||||
							
								
								
									
										1
									
								
								bin/config/rates/ruby.rate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bin/config/rates/ruby.rate
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 31.00 | ||||
|  | @ -1,20 +1,4 @@ | |||
| #!/bin/bash | ||||
| # Source de head.es para cargar los mensajes | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Intentar cargar mensajes (si es posible) | ||||
| if [ -f "$BIN_HOME/$BIN_LIBS/base.lib" ] && [ -f "$BIN_HOME/$BIN_MESG/head.$BIN_LANG" ]; then | ||||
|   source "$BIN_HOME/$BIN_LIBS/base.lib" | ||||
|   load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
|   USE_MESSAGES=true | ||||
| else | ||||
|   USE_MESSAGES=false | ||||
| fi | ||||
| 
 | ||||
| # Verificar si ~/.npm-global/bin está en el PATH | ||||
| if [[ ":$PATH:" != *":$HOME/.npm-global/bin:"* ]]; then | ||||
|   # Si no está en el PATH, usamos la ruta completa en el alias | ||||
|  | @ -23,10 +7,4 @@ else | |||
|   # Si está en el PATH, podemos usar el nombre directamente | ||||
|   alias cortana="claude" | ||||
| fi | ||||
| 
 | ||||
| # Mostrar el mensaje usando variables si están disponibles | ||||
| if [ "$USE_MESSAGES" = true ]; then | ||||
|   echo "${npm_046}" | ||||
| else | ||||
| echo "Alias cortana activado en la sesión actual." | ||||
| fi | ||||
|  |  | |||
|  | @ -1,8 +1,10 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # cortana_disable.sh | ||||
| # Script: cortana_disable.sh | ||||
| # Description: # Script para desactivar el alias 'cortana' para Claude Code | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/11 12:00:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -20,22 +22,34 @@ | |||
| # Script para desactivar el alias 'cortana' para Claude Code | ||||
| # Uso: | ||||
| #   ./cortana_disable.sh | ||||
| # Nota: no usa console.lib, ni console.es | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.0 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Verificar que 'dialog' esté instalado | ||||
|  | @ -63,3 +77,6 @@ else | |||
|   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Limpiar consola | ||||
| clear | ||||
|  |  | |||
|  | @ -1,8 +1,10 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # cortana_enable.sh | ||||
| # Script: cortana_enable.sh | ||||
| # Description: # Script para activar el alias 'cortana' para Claude Code | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/11 12:00:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,30 +19,43 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| # Script para activar el alias 'cortana' para Claude Code | ||||
| # Script para desactivar el alias 'cortana' para Claude Code | ||||
| # Uso: | ||||
| #   ./cortana_enable.sh | ||||
| # Nota: no usa console.lib, ni console.es | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.0 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Verificar que 'dialog' esté instalado | ||||
| if ! command -v dialog &>/dev/null; then | ||||
|   echo "${npm_001}" | ||||
|   clear | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
|  | @ -68,5 +83,11 @@ if [[ $? -eq 0 ]]; then | |||
|   dialog --backtitle "${title}" --title "${npm_036}" --msgbox "${npm_037}\n\n${npm_047}\n\nsource $ALIAS_FILE\n\n" 10 70 | ||||
| else | ||||
|   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|   clear | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Limpiar consola | ||||
| clear | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # cortana_token.sh | ||||
| # Modified: 2025-03-12 20:26:07 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # Script: cortana_token.sh | ||||
| # Description: Script para encriptar el token de Claude Code usando SOPS | ||||
| # Created:  2025/03/12 20:26:07 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,23 +21,35 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| # Script para encriptar el token de Cortana (Claude Code) usando SOPS | ||||
| # Script para encriptar el token de Cortana (Claude Code) para Cortana usando SOPS | ||||
| # Cortana Token se utiliza para la agente Cortana que es la asistente para los desarrolladores | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.0 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| check_dependencies() { | ||||
|  | @ -149,6 +165,7 @@ main() { | |||
|         dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} ${HOME}/.cortana/cortana.sops.yaml" 7 70 | ||||
|     else | ||||
|         dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50 | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  |  | |||
							
								
								
									
										3
									
								
								bin/cortana_unalias.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								bin/cortana_unalias.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/bin/bash | ||||
| unalias cortana 2>/dev/null | ||||
| echo "Alias cortana desactivado en la sesión actual." | ||||
|  | @ -1,12 +1,13 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: cversadm_token.sh | ||||
| # Script: cversion_token.sh | ||||
| # Description: Administrador de tokens para plataformas de control de versiones | ||||
| # Modified: 2025/03/15 | ||||
| # Created:  2025/03/15 10:07:08 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [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>] | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -24,36 +25,33 @@ | |||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| 
 | ||||
| # Definir variables necesarias para uso en funciones | ||||
| head_error="ERROR" | ||||
| head_exit="Salir" | ||||
| head_key_end="END" | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "console" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${cvmsg_000}" | ||||
| 
 | ||||
|  | @ -79,13 +77,7 @@ ensure_developers_dir() { | |||
| # Función para seleccionar la plataforma de control de versiones usando menu_actions | ||||
| select_platform() { | ||||
|   # Preparar opciones para menu_actions | ||||
|   local menu_options="1:${cvmsg_010} | ||||
| 2:${cvmsg_011} | ||||
| 3:${cvmsg_012} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| " | ||||
|   local menu_options="1:${cvmsg_010}\n2:${cvmsg_011}\n3:${cvmsg_012}" | ||||
|    | ||||
|   # Usar menu_actions en lugar de dialog_input_menu | ||||
|   local selection=$(menu_actions "${cvmsg_002}" "$menu_options" 9) | ||||
|  | @ -118,33 +110,35 @@ request_token() { | |||
|     "forgejo") platform_name="${cvmsg_012}" ;; | ||||
|   esac | ||||
|    | ||||
|   # Bucle para validación de token usando dialog directamente | ||||
|   # Bucle para validación de token usando funciones de console.lib | ||||
|   while true; do | ||||
|     # Usar dialog directamente en lugar de dialog_input_pass | ||||
|     token=$(dialog --backtitle "$title" --stdout --title "${cvmsg_003}" \ | ||||
|            --passwordbox "${cvmsg_004} $platform_name\n${cvmsg_005}" 8 60) | ||||
|     # Usar dialog_input_pass de console.lib | ||||
|     dialog_input_pass "${cvmsg_004} $platform_name" "${cvmsg_005}" | ||||
|      | ||||
|     # Verificar si el usuario canceló | ||||
|     if [ $? -ne 0 ]; then | ||||
|     if [ $codex -ne 0 ]; then | ||||
|       clear | ||||
|       return 1 | ||||
|     fi | ||||
|      | ||||
|     # Obtener token de la variable value establecida por dialog_input_pass | ||||
|     token="$value" | ||||
|      | ||||
|     # Validar token | ||||
|     if [ -z "$token" ]; then | ||||
|       dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_015}" 7 60 | ||||
|       dialog_error_box "${head_error}" "${cvmsg_015}" | ||||
|       continue | ||||
|     fi | ||||
|      | ||||
|     # Verificar longitud (debería tener al menos 30 caracteres) | ||||
|     if [ ${#token} -lt 30 ]; then | ||||
|       dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_016}" 7 60 | ||||
|       dialog_error_box "${head_error}" "${cvmsg_016}" | ||||
|       continue | ||||
|     fi | ||||
|      | ||||
|     # Verificar formato (debería contener caracteres alfanuméricos y algunos especiales) | ||||
|     if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then | ||||
|       dialog --backtitle "$title" --title "${head_warning}" --msgbox "${cvmsg_017}" 7 60 | ||||
|       dialog_error_box "${head_warning}" "${cvmsg_017}" | ||||
|     fi | ||||
|      | ||||
|     # Token válido | ||||
|  | @ -198,15 +192,6 @@ main() { | |||
|   check_sops_installed | ||||
|   ensure_developers_dir | ||||
|      | ||||
|   # Asegurar que head_000 y head_002 estén definidos para el título | ||||
|   if [ -z "$head_000" ] || [ -z "$head_002" ]; then | ||||
|     head_000="MRDevs" | ||||
|     head_002="Tools" | ||||
|   fi | ||||
|    | ||||
|   # Mostrar título inicial | ||||
|   display_text_header | ||||
|    | ||||
|   # Seleccionar plataforma | ||||
|   platform=$(select_platform) | ||||
|   if [ $? -ne 0 ]; then | ||||
|  | @ -231,7 +216,7 @@ main() { | |||
|       "forgejo") platform_name="${cvmsg_012}" ;; | ||||
|     esac | ||||
|      | ||||
|     dialog_error_box "${cvmsg_009}" "${cvmsg_006} $platform_name" | ||||
|     dialog_error_box "${head_info}" "${cvmsg_006} $platform_name" | ||||
|   else | ||||
|     local platform_name="" | ||||
|     case $platform in | ||||
							
								
								
									
										138
									
								
								bin/fjadmin_install.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										138
									
								
								bin/fjadmin_install.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,138 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: fjadmin_install.sh | ||||
| # Description: Script para instalar Forgejo Manager CLI. | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [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@rosero.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 | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${fjmsg_000}" | ||||
| 
 | ||||
| 
 | ||||
| # Verificar si dialog está instalado | ||||
| check_dialog_installed() { | ||||
|     if ! command -v dialog &> /dev/null; then | ||||
|         echo "${head_001}" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para verificar si cargo está instalado | ||||
| check_cargo() { | ||||
|     if ! command -v cargo &> /dev/null; then | ||||
|         dialog_error_box "${head_info}" "${fjmsg_002}" | ||||
|          | ||||
|         # Mostrar progreso de instalación | ||||
|         echo "curl https://sh.rustup.rs -sSf | sh" | ||||
|         curl https://sh.rustup.rs -sSf | sh | ||||
|          | ||||
|         # Cargar el entorno de Rust | ||||
|         source "$HOME/.cargo/env" | ||||
|          | ||||
|         dialog_error_box "${head_info}" "${fjmsg_003}" | ||||
|     else | ||||
|         dialog_error_box "${head_info}" "${fjmsg_004}" | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para verificar si forgejo-cli está instalado | ||||
| check_forgejo_cli() { | ||||
|     if ! command -v codeberg &> /dev/null; then | ||||
|         dialog_error_box "${head_info}" "${fjmsg_005}" | ||||
|          | ||||
|         # Verificar que cargo esté disponible | ||||
|         if ! command -v cargo &> /dev/null; then | ||||
|             dialog_error_box "${head_error}" "${fjmsg_006}\n${fjmsg_007}" | ||||
|             exit 1 | ||||
|         fi | ||||
|          | ||||
|         # Instalar forgejo-cli (codeberg-cli) | ||||
|         echo "cargo install codeberg-cli" | ||||
|         cargo install codeberg-cli | ||||
|          | ||||
|         if [ $? -eq 0 ]; then | ||||
|             dialog_error_box "${head_info}" "${fjmsg_008}" | ||||
|         else | ||||
|             dialog_error_box "${head_error}" "${fjmsg_009}" | ||||
|             exit 1 | ||||
|         fi | ||||
|     else | ||||
|         dialog_error_box "${head_info}" "${fjmsg_008}" | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función principal | ||||
| main() { | ||||
|     # Verificar si dialog está instalado | ||||
|     check_dialog_installed | ||||
|      | ||||
|     # Preguntar al usuario si desea instalar Forgejo CLI | ||||
|     dialog_yesno "${fjmsg_012}\n\n${fjmsg_013}" | ||||
|     if [ $? -ne 0 ]; then | ||||
|         dialog_error_box "${head_canceled}" "${fjmsg_014}" | ||||
|         clear | ||||
|         exit 0 | ||||
|     fi | ||||
|      | ||||
|     # Verificar si cargo está instalado | ||||
|     check_cargo | ||||
|      | ||||
|     dialog_error_box "${head_info}" "${fjmsg_010}" | ||||
|      | ||||
|     # Instalar forgejo-cli si no está instalado | ||||
|     check_forgejo_cli | ||||
|      | ||||
|     dialog_error_box "${head_info}" "${fjmsg_011}" | ||||
|      | ||||
|     clear | ||||
|     exit 0 | ||||
| } | ||||
| 
 | ||||
| # Ejecutar función principal | ||||
| main | ||||
|  | @ -1,59 +0,0 @@ | |||
| #!/bin/bash | ||||
| # ------------------------------------------------------------------ | ||||
| # [Author] Cortana Rosero One <cortana@rosero.one> | ||||
| # [Title]  fjcli_install.sh - Instalador de forgejo-cli | ||||
| # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||
| #           | ||||
| # AGPL License | ||||
| # Modified date: 14/03/2025 | ||||
| # ------------------------------------------------------------------ | ||||
| 
 | ||||
| # Función para verificar si cargo está instalado | ||||
| check_cargo() { | ||||
|     if ! command -v cargo &> /dev/null; then | ||||
|         echo "Cargo no está instalado. Instalando Rust y Cargo..." | ||||
|         curl https://sh.rustup.rs -sSf | sh | ||||
|         source "$HOME/.cargo/env" | ||||
|         echo "Rust y Cargo han sido instalados correctamente." | ||||
|     else | ||||
|         echo "Cargo ya está instalado." | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para verificar si codeberg-cli está instalado | ||||
| check_codeberg_cli() { | ||||
|     if ! command -v codeberg &> /dev/null; then | ||||
|         echo "codeberg-cli no está instalado. Instalando..." | ||||
|          | ||||
|         # Verificar que cargo esté disponible | ||||
|         if ! command -v cargo &> /dev/null; then | ||||
|             echo "ERROR: No se pudo encontrar cargo en el PATH después de la instalación." | ||||
|             echo "Por favor reinicie su terminal e intente nuevamente." | ||||
|             exit 1 | ||||
|         fi | ||||
|          | ||||
|         # Instalar codeberg-cli | ||||
|         cargo install codeberg-cli | ||||
|          | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "codeberg-cli instalado correctamente." | ||||
|         else | ||||
|             echo "ERROR: No se pudo instalar codeberg-cli." | ||||
|             exit 1 | ||||
|         fi | ||||
|     else | ||||
|         echo "codeberg-cli ya está instalado." | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Verificar si cargo está instalado | ||||
| check_cargo | ||||
| 
 | ||||
| echo "Preparando instalación de forgejo-cli..." | ||||
| 
 | ||||
| # Instalar codeberg-cli si no está instalado | ||||
| check_codeberg_cli | ||||
| 
 | ||||
| echo "Instalación completada." | ||||
| 
 | ||||
| exit 0 | ||||
|  | @ -1,12 +1,13 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: fj_login.sh | ||||
| # Script: forgejo_login.sh | ||||
| # Description: Script para autenticación con Forgejo usando tokens encriptados | ||||
| # Modified: 2025/03/15 | ||||
| # Created:   2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/19 15:47:08 | ||||
| # [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>] | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -23,36 +24,39 @@ | |||
| 
 | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| 
 | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| title="${head_000} ${fgmsg_000}" | ||||
| 
 | ||||
| # Función para verificar si berg está instalado | ||||
| check_berg_installed() { | ||||
|   if ! command -v berg &> /dev/null; then | ||||
|     echo "Error: berg (Forgejo CLI) no está instalado. Por favor, ejecute bin/fjcli_install.sh primero." | ||||
|     echo "${fgmsg_001} ${fgmsg_002}" | ||||
|     exit 1 | ||||
|   fi | ||||
| } | ||||
|  | @ -60,7 +64,7 @@ check_berg_installed() { | |||
| # 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, ejecute bin/bootstrap.sh para instalar las herramientas necesarias." | ||||
|     echo "${fgmsg_003} ${fgmsg_004}" | ||||
|     exit 1 | ||||
|   fi | ||||
| } | ||||
|  | @ -114,8 +118,8 @@ get_forgejo_url() { | |||
| login() { | ||||
|   # Verificar que el archivo de token encriptado existe | ||||
|   if [ ! -f "${DEVELOPER_DIR}/forgejo.sops.yaml" ]; then | ||||
|     echo "Error: No se encontró el archivo de token para Forgejo." | ||||
|     echo "Por favor, ejecute bin/cversadm_token.sh para configurar el token primero." | ||||
|     echo "${fgmsg_005}" | ||||
|     echo "${fgmsg_006}" | ||||
|     exit 1 | ||||
|   fi | ||||
|    | ||||
|  | @ -126,22 +130,22 @@ login() { | |||
|   local forgejo_url=$(get_forgejo_url) | ||||
|    | ||||
|   if [ -n "$forgejo_url" ]; then | ||||
|     echo "Usando servidor Forgejo: $forgejo_url" | ||||
|     echo "${fgmsg_007} $forgejo_url" | ||||
|     export BERG_BASE_URL="$forgejo_url" | ||||
|   else | ||||
|     echo "ADVERTENCIA: No se pudo detectar automáticamente la URL de Forgejo." | ||||
|     echo "Si la autenticación falla, establezca manualmente BERG_BASE_URL." | ||||
|     echo "${fgmsg_008}" | ||||
|     echo "${fgmsg_009}" | ||||
|   fi | ||||
|     | ||||
|   # Iniciar sesión con berg | ||||
|   echo "Iniciando sesión en Forgejo..." | ||||
|   echo "${fgmsg_010}" | ||||
|   berg auth login -t "$token" | ||||
|   local login_status=$? | ||||
|    | ||||
|   if [ $login_status -eq 0 ]; then | ||||
|     echo "Sesión iniciada correctamente en Forgejo." | ||||
|     echo "${fgmsg_011}" | ||||
|   else | ||||
|     echo "Error al iniciar sesión en Forgejo. Por favor, verifique su token." | ||||
|     echo "${fgmsg_012}" | ||||
|     exit 1 | ||||
|   fi | ||||
| } | ||||
|  | @ -152,18 +156,18 @@ logout() { | |||
|   local forgejo_url=$(get_forgejo_url) | ||||
|    | ||||
|   if [ -n "$forgejo_url" ]; then | ||||
|     echo "Usando servidor Forgejo: $forgejo_url" | ||||
|     echo "${fgmsg_007} $forgejo_url" | ||||
|     export BERG_BASE_URL="$forgejo_url" | ||||
|   fi | ||||
| 
 | ||||
|   # Ya no se eliminan alias | ||||
|    | ||||
|   echo "Cerrando sesión de Forgejo..." | ||||
|   echo "${fgmsg_013}" | ||||
|   if ! berg auth status &>/dev/null; then | ||||
|     echo "No hay sesión activa en Forgejo." | ||||
|     echo "${fgmsg_014}" | ||||
|   else | ||||
|     berg auth logout -s 2>/dev/null || true | ||||
|     echo "Sesión cerrada." | ||||
|     echo "${fgmsg_015}" | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
|  | @ -1,30 +1,77 @@ | |||
| #!/bin/bash | ||||
| # ------------------------------------------------------------------ | ||||
| # | ||||
| # Script: ghadmin_install.sh | ||||
| # Description: Script para instalar github manager CLI | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Cortana Rosero One <cortana@rosero.one> | ||||
| # [Title]  ghcli_install.sh - Instalador de GitHub CLI | ||||
| # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||
| # | ||||
| # AGPL License | ||||
| # Modified date: 14/03/2025 | ||||
| # ------------------------------------------------------------------ | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${ghmsg_000}" | ||||
| 
 | ||||
| # Función para verificar si se está ejecutando como root | ||||
| check_root() { | ||||
|     if [ "$(id -u)" -ne 0 ]; then | ||||
|         echo "Este script requiere privilegios de administrador." | ||||
|         echo "Intentando escalar privilegios..." | ||||
|         echo "${ghmsg_001}" | ||||
|         echo "${ghmsg_002}" | ||||
|          | ||||
|         # Verificar si sudo está disponible | ||||
|         if command -v sudo &> /dev/null; then | ||||
|             echo "Usando sudo para escalar privilegios..." | ||||
|             echo "${ghmsg_003}" | ||||
|             sudo "$0" "$@" | ||||
|             exit $? | ||||
|         elif command -v doas &> /dev/null; then | ||||
|             echo "Usando doas para escalar privilegios..." | ||||
|             echo "${ghmsg_004}" | ||||
|             doas "$0" "$@" | ||||
|             exit $? | ||||
|         else | ||||
|             echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." | ||||
|             echo "${ghmsg_005}" | ||||
|             clear | ||||
|             exit 1 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -46,12 +93,12 @@ detect_distro() { | |||
|         DISTRO=$(uname -s) | ||||
|     fi | ||||
|      | ||||
|     echo "Distribución detectada: $DISTRO" | ||||
|     echo "${ghmsg_006} $DISTRO" | ||||
| } | ||||
| 
 | ||||
| # Función para instalar GitHub CLI en sistemas basados en Debian/Ubuntu | ||||
| install_gh_debian() { | ||||
|     echo "Instalando GitHub CLI en sistema basado en Debian/Ubuntu..." | ||||
|     echo "${ghmsg_007}" | ||||
|      | ||||
|     # Añadir repositorio de GitHub CLI | ||||
|     type -p curl >/dev/null || apt update && apt install curl -y | ||||
|  | @ -62,16 +109,17 @@ install_gh_debian() { | |||
|     && apt install gh -y | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         echo "${ghmsg_008}" | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitHub CLI." | ||||
|         echo "${ghmsg_009}" | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar GitHub CLI en sistemas basados en Red Hat/Fedora | ||||
| install_gh_redhat() { | ||||
|     echo "Instalando GitHub CLI en sistema basado en Red Hat/Fedora..." | ||||
|     echo "${ghmsg_010}" | ||||
|      | ||||
|     # Añadir repositorio de GitHub CLI | ||||
|     dnf install -y dnf-plugins-core | ||||
|  | @ -79,51 +127,54 @@ install_gh_redhat() { | |||
|     dnf install -y gh | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         echo "${ghmsg_008}" | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitHub CLI." | ||||
|         echo "${ghmsg_009}" | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar GitHub CLI en Arch Linux | ||||
| install_gh_arch() { | ||||
|     echo "Instalando GitHub CLI en Arch Linux..." | ||||
|     echo "${ghmsg_011}" | ||||
|      | ||||
|     # Instalar GitHub CLI desde los repositorios oficiales | ||||
|     pacman -Sy --noconfirm gh | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         echo "${ghmsg_008}" | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitHub CLI." | ||||
|         echo "${ghmsg_009}" | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar GitHub CLI en sistemas basados en SUSE | ||||
| install_gh_suse() { | ||||
|     echo "Instalando GitHub CLI en sistema basado en SUSE..." | ||||
|     echo "${ghmsg_012}" | ||||
|      | ||||
|     # Añadir repositorio de GitHub CLI | ||||
|     zypper addrepo --refresh https://cli.github.com/packages/rpm/gh-cli.repo | ||||
|     zypper install -y gh | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         echo "${ghmsg_008}" | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitHub CLI." | ||||
|         echo "${ghmsg_009}" | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar GitHub CLI en macOS | ||||
| install_gh_macos() { | ||||
|     echo "Instalando GitHub CLI en macOS..." | ||||
|     echo "${ghmsg_013}" | ||||
|      | ||||
|     # Verificar si Homebrew está instalado | ||||
|     if ! command -v brew &> /dev/null; then | ||||
|         echo "Homebrew no está instalado. Instalando Homebrew..." | ||||
|         echo "${ghmsg_014}" | ||||
|         /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||||
|     fi | ||||
|      | ||||
|  | @ -131,9 +182,10 @@ install_gh_macos() { | |||
|     brew install gh | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         echo "${ghmsg_008}" | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitHub CLI." | ||||
|         echo "${ghmsg_009}" | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | @ -141,12 +193,14 @@ install_gh_macos() { | |||
| # Función para verificar si gh está instalado | ||||
| check_gh() { | ||||
|     if command -v gh &> /dev/null; then | ||||
|         echo "GitHub CLI ya está instalado." | ||||
|         echo "Versión actual:" | ||||
|         gh --version | ||||
|         read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL | ||||
|         if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then | ||||
|             echo "Operación cancelada." | ||||
|         # Mostrar versión actual | ||||
|         local current_version=$(gh --version | head -n 1) | ||||
|          | ||||
|         # Preguntar si se desea reinstalar o actualizar usando dialog | ||||
|         dialog_yesno "${ghmsg_015}\n${ghmsg_016}\n${current_version}\n\n${ghmsg_017}" | ||||
|          | ||||
|         if [ $? -ne 0 ]; then | ||||
|             dialog_error_box "${head_info}" "${ghmsg_018}" | ||||
|             exit 0 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -154,6 +208,12 @@ check_gh() { | |||
| 
 | ||||
| # Función principal | ||||
| main() { | ||||
|     # Verificar que 'dialog' esté instalado | ||||
|     if ! command -v dialog &>/dev/null; then | ||||
|         echo "${head_001}" | ||||
|         exit 1 | ||||
|     fi | ||||
|      | ||||
|     # Verificar si ya está instalado | ||||
|     check_gh | ||||
|      | ||||
|  | @ -183,30 +243,25 @@ main() { | |||
|             install_gh_macos | ||||
|             ;; | ||||
|         *) | ||||
|             echo "Distribución no soportada: $DISTRO" | ||||
|             echo "Por favor, visite https://github.com/cli/cli#installation para instrucciones de instalación manual." | ||||
|             dialog_error_box "${head_error}" "${ghmsg_019} $DISTRO\n\n${ghmsg_020}" | ||||
|             exit 1 | ||||
|             ;; | ||||
|     esac | ||||
|      | ||||
|     # Verificar la instalación | ||||
|     if command -v gh &> /dev/null; then | ||||
|         echo "GitHub CLI instalado correctamente." | ||||
|         gh --version | ||||
|         local current_version=$(gh --version | head -n 1) | ||||
|          | ||||
|         # Sugerir autenticación | ||||
|         echo "" | ||||
|         echo "Para autenticarse con GitHub, ejecute:" | ||||
|         echo "gh auth login" | ||||
|         echo "" | ||||
|         echo "Para más información, visite: https://cli.github.com/manual/" | ||||
|         # Mostrar mensaje de éxito y sugerir autenticación usando dialog | ||||
|         dialog_error_box "${head_success}" "${ghmsg_008}\n\n${current_version}\n\n${ghmsg_021}\ngh auth login\n\n${ghmsg_022}" | ||||
|     else | ||||
|         echo "ERROR: La instalación de GitHub CLI falló." | ||||
|         dialog_error_box "${head_error}" "${ghmsg_023}" | ||||
|         exit 1 | ||||
|     fi | ||||
|      | ||||
|     clear | ||||
| } | ||||
| 
 | ||||
| # Ejecutar función principal | ||||
| main "$@" | ||||
| 
 | ||||
| exit 0 | ||||
|  | @ -1,30 +1,76 @@ | |||
| #!/bin/bash | ||||
| # ------------------------------------------------------------------ | ||||
| # | ||||
| # Script: gladmin_install.sh | ||||
| # Description: Script para instalar Gitlab Manager CLI. | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Cortana Rosero One <cortana@rosero.one> | ||||
| # [Title]  glcli_install.sh - Instalador de GitLab CLI | ||||
| # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||
| # | ||||
| # AGPL License | ||||
| # Modified date: 14/03/2025 | ||||
| # ------------------------------------------------------------------ | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${glmsg_000}" | ||||
| 
 | ||||
| # Función para verificar si se está ejecutando como root | ||||
| check_root() { | ||||
|     if [ "$(id -u)" -ne 0 ]; then | ||||
|         echo "Este script requiere privilegios de administrador." | ||||
|         echo "Intentando escalar privilegios..." | ||||
|         echo "${glmsg_001}" | ||||
|         echo "${glmsg_002}" | ||||
|          | ||||
|         # Verificar si sudo está disponible | ||||
|         if command -v sudo &> /dev/null; then | ||||
|             echo "Usando sudo para escalar privilegios..." | ||||
|             echo "${glmsg_003}" | ||||
|             sudo "$0" "$@" | ||||
|             exit $? | ||||
|         elif command -v doas &> /dev/null; then | ||||
|             echo "Usando doas para escalar privilegios..." | ||||
|             echo "${glmsg_004}" | ||||
|             doas "$0" "$@" | ||||
|             exit $? | ||||
|         else | ||||
|             echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." | ||||
|             echo "${glmsg_005}" | ||||
|             exit 1 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -46,21 +92,21 @@ detect_distro() { | |||
|         DISTRO=$(uname -s) | ||||
|     fi | ||||
|      | ||||
|     echo "Distribución detectada: $DISTRO" | ||||
|     echo "${glmsg_006} $DISTRO" | ||||
| } | ||||
| 
 | ||||
| # Función para instalar glab mediante Homebrew en macOS y Linux | ||||
| install_glab_homebrew() { | ||||
|     echo "Instalando GitLab CLI mediante Homebrew..." | ||||
|     echo "${glmsg_007}" | ||||
|      | ||||
|     # Verificar si Homebrew está instalado | ||||
|     if ! command -v brew &> /dev/null; then | ||||
|         echo "Homebrew no está instalado. Instalando Homebrew..." | ||||
|         echo "${glmsg_008}" | ||||
|         /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||||
|          | ||||
|         # Verificar si la instalación fue exitosa | ||||
|         if ! command -v brew &> /dev/null; then | ||||
|             echo "ERROR: No se pudo instalar Homebrew." | ||||
|             echo "${glmsg_009}" | ||||
|             return 1 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -69,17 +115,17 @@ install_glab_homebrew() { | |||
|     brew install gitlab-glab/tap/glab | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitLab CLI instalado correctamente mediante Homebrew." | ||||
|         echo "${glmsg_010}" | ||||
|         return 0 | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante Homebrew." | ||||
|         echo "${glmsg_011}" | ||||
|         return 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar glab en sistemas basados en Debian/Ubuntu | ||||
| install_glab_debian() { | ||||
|     echo "Instalando GitLab CLI en sistema basado en Debian/Ubuntu..." | ||||
|     echo "${glmsg_012}" | ||||
|      | ||||
|     # Verificar si curl está instalado | ||||
|     if ! command -v curl &> /dev/null; then | ||||
|  | @ -88,13 +134,13 @@ install_glab_debian() { | |||
|      | ||||
|     # Intentar primero usando los paquetes del sistema si están disponibles | ||||
|     if command -v apt &> /dev/null; then | ||||
|         echo "Verificando si glab está disponible en los repositorios..." | ||||
|         echo "${glmsg_013}" | ||||
|         apt-cache search --names-only "^glab$" 2>/dev/null | grep -q "^glab" | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." | ||||
|             echo "${glmsg_014}" | ||||
|             apt update && apt install -y glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." | ||||
|                 echo "${glmsg_015}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|  | @ -102,81 +148,81 @@ install_glab_debian() { | |||
|      | ||||
|     # Si no está en los repositorios, usar el script oficial | ||||
|     if command -v gpg &> /dev/null; then | ||||
|         echo "Agregando repositorio oficial de GitLab..." | ||||
|         echo "${glmsg_016}" | ||||
|         curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI instalado correctamente mediante script oficial." | ||||
|             echo "${glmsg_017}" | ||||
|             return 0 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Si el método anterior falla, probar con Homebrew | ||||
|     echo "Intentando instalar mediante Homebrew..." | ||||
|     echo "${glmsg_018}" | ||||
|     install_glab_homebrew | ||||
|     return $? | ||||
| } | ||||
| 
 | ||||
| # Función para instalar glab en sistemas basados en Red Hat/Fedora | ||||
| install_glab_redhat() { | ||||
|     echo "Instalando GitLab CLI en sistema basado en Red Hat/Fedora..." | ||||
|     echo "${glmsg_019}" | ||||
|      | ||||
|     # Verificar si dnf está instalado | ||||
|     if command -v dnf &> /dev/null; then | ||||
|         # Verificar si glab está disponible en los repositorios | ||||
|         echo "Verificando si glab está disponible en los repositorios..." | ||||
|         echo "${glmsg_013}" | ||||
|         dnf list glab &>/dev/null | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." | ||||
|             echo "${glmsg_014}" | ||||
|             dnf install -y glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." | ||||
|                 echo "${glmsg_015}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|          | ||||
|         # Si no está en los repositorios, usar el script oficial | ||||
|         if command -v gpg &> /dev/null; then | ||||
|             echo "Usando script oficial de instalación..." | ||||
|             echo "${glmsg_020}" | ||||
|             curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente mediante script oficial." | ||||
|                 echo "${glmsg_017}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|          | ||||
|         # Si el método anterior falla, probar con snap | ||||
|         if command -v snap &> /dev/null; then | ||||
|             echo "Intentando instalar mediante snap..." | ||||
|             echo "${glmsg_021}" | ||||
|             snap install glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente mediante snap." | ||||
|                 echo "${glmsg_022}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|     # Si dnf no está disponible, pero yum sí | ||||
|     elif command -v yum &> /dev/null; then | ||||
|         # Verificar si glab está disponible en los repositorios | ||||
|         echo "Verificando si glab está disponible en los repositorios..." | ||||
|         echo "${glmsg_013}" | ||||
|         yum list glab &>/dev/null | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." | ||||
|             echo "${glmsg_014}" | ||||
|             yum install -y glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." | ||||
|                 echo "${glmsg_015}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Si los métodos anteriores fallan, probar con Homebrew | ||||
|     echo "Intentando instalar mediante Homebrew..." | ||||
|     echo "${glmsg_018}" | ||||
|     install_glab_homebrew | ||||
|     return $? | ||||
| } | ||||
| 
 | ||||
| # Función para instalar glab en Arch Linux | ||||
| install_glab_arch() { | ||||
|     echo "Instalando GitLab CLI en Arch Linux..." | ||||
|     echo "${glmsg_023}" | ||||
|      | ||||
|     # Intentar primero usando el repositorio oficial | ||||
|     if command -v pacman &> /dev/null; then | ||||
|  | @ -184,7 +230,7 @@ install_glab_arch() { | |||
|         if pacman -Ss glab | grep -q "^community/glab"; then | ||||
|             pacman -Sy --noconfirm glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." | ||||
|                 echo "${glmsg_015}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|  | @ -193,55 +239,55 @@ install_glab_arch() { | |||
|         if command -v yay &> /dev/null; then | ||||
|             yay -S --noconfirm glab | ||||
|             if [ $? -eq 0 ]; then | ||||
|                 echo "GitLab CLI instalado correctamente desde AUR." | ||||
|                 echo "${glmsg_024}" | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Si los métodos anteriores fallan, probar con Homebrew | ||||
|     echo "Intentando instalar mediante Homebrew..." | ||||
|     echo "${glmsg_018}" | ||||
|     install_glab_homebrew | ||||
|     return $? | ||||
| } | ||||
| 
 | ||||
| # Función para instalar glab en sistemas basados en SUSE | ||||
| install_glab_suse() { | ||||
|     echo "Instalando GitLab CLI en sistema basado en SUSE..." | ||||
|     echo "${glmsg_025}" | ||||
|      | ||||
|     # Intentar primero usando el script oficial | ||||
|     if command -v gpg &> /dev/null; then | ||||
|         echo "Usando script oficial de instalación..." | ||||
|         echo "${glmsg_020}" | ||||
|         curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI instalado correctamente mediante script oficial." | ||||
|             echo "${glmsg_017}" | ||||
|             return 0 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Si el método anterior falla, probar con snap | ||||
|     if command -v snap &> /dev/null; then | ||||
|         echo "Intentando instalar mediante snap..." | ||||
|         echo "${glmsg_021}" | ||||
|         snap install glab | ||||
|         if [ $? -eq 0 ]; then | ||||
|             echo "GitLab CLI instalado correctamente mediante snap." | ||||
|             echo "${glmsg_022}" | ||||
|             return 0 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Si los métodos anteriores fallan, probar con Homebrew | ||||
|     echo "Intentando instalar mediante Homebrew..." | ||||
|     echo "${glmsg_018}" | ||||
|     install_glab_homebrew | ||||
|     return $? | ||||
| } | ||||
| 
 | ||||
| # Función para instalar directamente usando Go | ||||
| install_glab_go() { | ||||
|     echo "Intentando instalar GitLab CLI mediante Go..." | ||||
|     echo "${glmsg_026}" | ||||
|      | ||||
|     # Verificar si Go está instalado | ||||
|     if ! command -v go &> /dev/null; then | ||||
|         echo "Go no está instalado. Se requiere Go para este método de instalación." | ||||
|         echo "${glmsg_027}" | ||||
|         return 1 | ||||
|     fi | ||||
|      | ||||
|  | @ -249,20 +295,20 @@ install_glab_go() { | |||
|     go install gitlab.com/gitlab-org/cli/cmd/glab@main | ||||
|      | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "GitLab CLI instalado correctamente mediante Go." | ||||
|         echo "Asegúrese de que \$GOPATH/bin esté en su PATH." | ||||
|         echo "Por ejemplo, puede agregar lo siguiente a su ~/.bashrc o ~/.zshrc:" | ||||
|         echo "export PATH=\$PATH:\$HOME/go/bin" | ||||
|         echo "${glmsg_028}" | ||||
|         echo "${glmsg_029}" | ||||
|         echo "${glmsg_030}" | ||||
|         echo "${glmsg_031}" | ||||
|         return 0 | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante Go." | ||||
|         echo "${glmsg_032}" | ||||
|         return 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Función para instalar usando método binario genérico | ||||
| install_glab_binary() { | ||||
|     echo "Instalando GitLab CLI usando binarios precompilados..." | ||||
|     echo "${glmsg_033}" | ||||
|      | ||||
|     # Crear directorio temporal | ||||
|     TMP_DIR=$(mktemp -d) | ||||
|  | @ -278,7 +324,7 @@ install_glab_binary() { | |||
|             ARCH="arm64" | ||||
|             ;; | ||||
|         *) | ||||
|             echo "Arquitectura no soportada: $ARCH" | ||||
|             echo "${glmsg_034} $ARCH" | ||||
|             return 1 | ||||
|             ;; | ||||
|     esac | ||||
|  | @ -295,12 +341,12 @@ install_glab_binary() { | |||
|     # Construir URL de descarga | ||||
|     DOWNLOAD_URL="https://github.com/profclems/glab/releases/download/${LATEST_VERSION}/glab_${LATEST_VERSION:1}_${OS}_${ARCH}.tar.gz" | ||||
|      | ||||
|     echo "Descargando GitLab CLI desde: $DOWNLOAD_URL" | ||||
|     echo "${glmsg_035} $DOWNLOAD_URL" | ||||
|      | ||||
|     # Descargar y extraer | ||||
|     curl -L "$DOWNLOAD_URL" -o glab.tar.gz | ||||
|     if [ $? -ne 0 ]; then | ||||
|         echo "ERROR: No se pudo descargar GitLab CLI." | ||||
|         echo "${glmsg_036}" | ||||
|         cd - > /dev/null | ||||
|         rm -rf "$TMP_DIR" | ||||
|         return 1 | ||||
|  | @ -308,7 +354,7 @@ install_glab_binary() { | |||
|      | ||||
|     tar xzf glab.tar.gz | ||||
|     if [ $? -ne 0 ]; then | ||||
|         echo "ERROR: No se pudo extraer el archivo de GitLab CLI." | ||||
|         echo "${glmsg_037}" | ||||
|         cd - > /dev/null | ||||
|         rm -rf "$TMP_DIR" | ||||
|         return 1 | ||||
|  | @ -324,10 +370,10 @@ install_glab_binary() { | |||
|      | ||||
|     # Verificar instalación | ||||
|     if command -v glab &> /dev/null; then | ||||
|         echo "GitLab CLI instalado correctamente mediante binarios precompilados." | ||||
|         echo "${glmsg_038}" | ||||
|         return 0 | ||||
|     else | ||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante binarios precompilados." | ||||
|         echo "${glmsg_039}" | ||||
|         return 1 | ||||
|     fi | ||||
| } | ||||
|  | @ -335,12 +381,14 @@ install_glab_binary() { | |||
| # Función para verificar si glab está instalado | ||||
| check_glab() { | ||||
|     if command -v glab &> /dev/null; then | ||||
|         echo "GitLab CLI ya está instalado." | ||||
|         echo "Versión actual:" | ||||
|         glab --version | ||||
|         read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL | ||||
|         if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then | ||||
|             echo "Operación cancelada." | ||||
|         # Mostrar versión actual | ||||
|         local current_version=$(glab --version | head -n 1) | ||||
|          | ||||
|         # Preguntar si se desea reinstalar o actualizar usando dialog | ||||
|         dialog_yesno "${glmsg_040}\n${glmsg_041}\n${current_version}\n\n${glmsg_042}" | ||||
|          | ||||
|         if [ $? -ne 0 ]; then | ||||
|             dialog_error_box "${head_info}" "${glmsg_043}" | ||||
|             exit 0 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -348,6 +396,12 @@ check_glab() { | |||
| 
 | ||||
| # Función principal | ||||
| main() { | ||||
|     # Verificar que 'dialog' esté instalado | ||||
|     if ! command -v dialog &>/dev/null; then | ||||
|         echo "${head_001}" | ||||
|         exit 1 | ||||
|     fi | ||||
|      | ||||
|     # Verificar si ya está instalado | ||||
|     check_glab | ||||
|      | ||||
|  | @ -394,14 +448,13 @@ main() { | |||
|             fi | ||||
|             ;; | ||||
|         *) | ||||
|             echo "Distribución no soportada directamente: $DISTRO" | ||||
|             echo "Intentando métodos alternativos..." | ||||
|             dialog_error_box "${head_warning}" "${glmsg_044} $DISTRO\n${glmsg_045}" | ||||
|             ;; | ||||
|     esac | ||||
|      | ||||
|     # Si no se pudo instalar con el método específico para la distribución, intentar métodos alternativos | ||||
|     if [ "$install_success" = false ]; then | ||||
|         echo "Intentando métodos alternativos de instalación..." | ||||
|         dialog_error_box "${head_info}" "${glmsg_046}" | ||||
|          | ||||
|         # Intentar instalar con Go | ||||
|         if command -v go &> /dev/null; then | ||||
|  | @ -421,25 +474,19 @@ main() { | |||
|          | ||||
|         # Si todos los métodos fallan | ||||
|         if [ "$install_success" = false ]; then | ||||
|             echo "No se pudo instalar GitLab CLI con ninguno de los métodos disponibles." | ||||
|             echo "Por favor, visite https://gitlab.com/gitlab-org/cli para instrucciones de instalación manual." | ||||
|             dialog_error_box "${head_error}" "${glmsg_047}\n\n${glmsg_048}" | ||||
|             exit 1 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Verificar la instalación | ||||
|     if command -v glab &> /dev/null; then | ||||
|         echo "GitLab CLI instalado correctamente." | ||||
|         glab --version | ||||
|         local current_version=$(glab --version | head -n 1) | ||||
|          | ||||
|         # Sugerir autenticación | ||||
|         echo "" | ||||
|         echo "Para autenticarse con GitLab, ejecute:" | ||||
|         echo "glab auth login" | ||||
|         echo "" | ||||
|         echo "Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md" | ||||
|         # Mostrar mensaje de éxito y sugerir autenticación usando dialog | ||||
|         dialog_error_box "${head_success}" "${glmsg_049}\n\n${current_version}\n\n${glmsg_050}\nglab auth login\n\n${glmsg_051}" | ||||
|     else | ||||
|         echo "ERROR: La instalación de GitLab CLI falló." | ||||
|         dialog_error_box "${head_error}" "${glmsg_052}" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | @ -447,4 +494,7 @@ main() { | |||
| # Ejecutar función principal | ||||
| main "$@" | ||||
| 
 | ||||
| # Limpiar la pantalla al finalizar | ||||
| clear | ||||
| 
 | ||||
| exit 0 | ||||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # gpg_init.sh | ||||
| # Modified: 2024/12/09 10:27:00 | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # Script: gpg_init.sh | ||||
| # Description: Script de inicialización de estructura para firma GPG | ||||
| # Created:  2024/12/09 10:27:00  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,10 +21,23 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
|  | @ -43,8 +60,6 @@ load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | |||
| # Load gpg messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "gpg" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ########### MAIN PROGRAM ########### | ||||
| 
 | ||||
| # Set program title | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # helix_install.sh | ||||
| # Modified: 2025/03/11 15:00:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # Script: helix_install.sh | ||||
| # Description: Script para instalar Helix Editor | ||||
| # Created:  2025/03/11 15:00:00  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -21,22 +25,32 @@ | |||
| # Uso: | ||||
| #   ./helix_install.sh | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.0 | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| source $BIN_HOME/$BIN_LIBS/console.lib | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${hx_001}" | ||||
| 
 | ||||
|  | @ -221,6 +235,10 @@ install_helix_tarball() { | |||
| if [ "$EUID" -ne 0 ]; then | ||||
|   dialog_error_box "${head_superuser}" "${hx_011}" | ||||
|   dialog_input_pass "${npm_002}" "" "" | ||||
|   if [ $? -ne 0 ]; then | ||||
|     dialog_error_box "${head_error}" "${npm_003}" | ||||
|     finish | ||||
|   fi | ||||
|   SUDO_PASS="$value" | ||||
|    | ||||
|   # Verificar que la contraseña funcione | ||||
|  |  | |||
							
								
								
									
										170
									
								
								bin/jarvis_token.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										170
									
								
								bin/jarvis_token.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,170 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: jarvis_token.sh | ||||
| # Description: Script para encriptar el Jarvis token de Claude Code usando SOPS | ||||
| # Created:  2025/03/12 20:26:07 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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/>. | ||||
| 
 | ||||
| # Script para encriptar el token de Cortana (Claude Code) para Cortana usando SOPS | ||||
| # Jarvis Token se usa para el agente Jarvis a nivel de servidor de desarrollo autonomo | ||||
| 
 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| BIN_SOPS="sops" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| 
 | ||||
| check_dependencies() { | ||||
|     # Verificar que 'dialog' esté instalado | ||||
|     if ! command -v dialog &>/dev/null; then | ||||
|         echo "${npm_001}" | ||||
|         exit 1 | ||||
|     fi | ||||
|      | ||||
|     # Verificar que 'sops' esté instalado | ||||
|     if ! command -v sops &>/dev/null; then | ||||
|         dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_051}" 7 50 | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| encrypt_token() { | ||||
|     local output_file="$1" | ||||
|     local token="$2" | ||||
|     local token_file="/tmp/jarvis_token_$$" | ||||
|      | ||||
|     # Ensure directory exists | ||||
|     mkdir -p "${BIN_HOME}/${BIN_SOPS}" | ||||
|      | ||||
|     # Convert token to base64 | ||||
|     local token_base64=$(echo -n "$token" | base64) | ||||
|      | ||||
|     # Create temporary file with base64 encoded token | ||||
|     echo "$token_base64" > "$token_file" | ||||
|      | ||||
|     # Encrypt using sops | ||||
|     if sops --encrypt "$token_file" > "$output_file"; then | ||||
|         # Ensure secure permissions | ||||
|         chmod 600 "$output_file" | ||||
|     else | ||||
|         rm -f "$token_file" | ||||
|         return 1 | ||||
|     fi | ||||
|      | ||||
|     # Clean up | ||||
|     rm -f "$token_file" | ||||
|     return 0 | ||||
| } | ||||
| 
 | ||||
| main() { | ||||
|     check_dependencies | ||||
|      | ||||
|     # Ensure directory exists | ||||
|     mkdir -p "${BIN_HOME}/${BIN_SOPS}" | ||||
|      | ||||
|     # Get SOPS config file path | ||||
|     sops_file="${BIN_HOME}/${BIN_SOPS}/jarvis.sops.yaml" | ||||
|         | ||||
|     # Check if file exists and ask for confirmation to overwrite | ||||
|     if [ -f "$sops_file" ]; then | ||||
|         dialog --backtitle "$title" --title "${npm_031}" \ | ||||
|                --yesno "El archivo $sops_file ${npm_053}" 7 60 | ||||
|          | ||||
|         if [ $? -ne 0 ]; then | ||||
|             dialog --backtitle "$title" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|             clear | ||||
|             exit 0 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Get Jarvis token | ||||
|     while true; do | ||||
|         token=$(dialog --backtitle "$title" --stdout --title "${npm_000_0} Token" \ | ||||
|                      --passwordbox "${npm_054} ${npm_000_0}:" 8 60) | ||||
|          | ||||
|         # Check if user canceled | ||||
|         if [ $? -ne 0 ]; then | ||||
|             clear | ||||
|             dialog --backtitle "$title" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||
|             clear | ||||
|             exit 0 | ||||
|         fi | ||||
|          | ||||
|         # Validate token | ||||
|         if [ -z "$token" ]; then | ||||
|             dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_055}" 7 60 | ||||
|             continue | ||||
|         fi | ||||
|          | ||||
|         # Check token length (should be at least 64 characters) | ||||
|         if [ ${#token} -lt 64 ]; then | ||||
|             dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_056}" 7 60 | ||||
|             continue | ||||
|         fi | ||||
|          | ||||
|         # Check token format (should contain alphanumeric characters and some special chars) | ||||
|         if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then | ||||
|             dialog --backtitle "$title" --title "${head_warning}" --msgbox "${npm_057}" 7 60 | ||||
|         fi | ||||
|          | ||||
|         # Token is valid | ||||
|         break | ||||
|     done | ||||
|      | ||||
|     # Clear screen before proceeding | ||||
|     clear | ||||
|      | ||||
|     # Encrypt the token | ||||
|     if encrypt_token "$sops_file" "$token"; then | ||||
|         dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} $sops_file" 7 70 | ||||
|     else | ||||
|         dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50 | ||||
|         clear | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Execute main function | ||||
| main | ||||
| clear | ||||
| exit 0 | ||||
|  | @ -34,7 +34,7 @@ DEVELOPER_DIR=${HOME}/.developer | |||
| DATENOW="$(date +"%Y-%m-%d %H:%M:%S")" | ||||
| DATEBAK="$(date +"%Y%m%d%H%M%S")" | ||||
| 
 | ||||
| FREEKV_URL=$(cat < "${BIN_HOME}/${BIN_BASE}/${CONFPATH}/freekeyval.dat") | ||||
| FREEKV_URL=$(cat < "${BIN_PATH:=${BIN_HOME}}/${CONFPATH}/freekeyval.dat") | ||||
| FREEKV_SOPS_FILE=freekv-sops.devs.yaml | ||||
| 
 | ||||
| DOCKER_LOCAL=dockerfile.local | ||||
|  | @ -44,8 +44,6 @@ DOCKER_BUILD=build | |||
| DOCKER_FILE=Dockerfile | ||||
| DOCKER_ENTRY=entrypoint.sh | ||||
| 
 | ||||
| VERSION="$(cat < ${BIN_HOME}/${BIN_CONF}/version)" | ||||
| 
 | ||||
| # Verificar si el script se está ejecutando como usuario root (superusuario) | ||||
| function is_root() { | ||||
|   if [ "$(id -u)" -eq 0 ]; then | ||||
|  |  | |||
|  | @ -60,3 +60,136 @@ cvmsg_015="El token no puede estar vacío. Por favor ingrese un token válido." | |||
| cvmsg_016="El token parece ser demasiado corto. Verifique que haya copiado el token completo." | ||||
| cvmsg_017="El token contiene caracteres no estándar. Verifique que sea correcto." | ||||
| 
 | ||||
| # Mensajes para qr_secret.sh | ||||
| qrmsg_000="EXTRACTOR DE SECRETOS QR" | ||||
| qrmsg_001="Nombre del archivo" | ||||
| qrmsg_002="Ingrese un nombre para el archivo (solo letras, números, ., - y _)" | ||||
| qrmsg_003="Seleccione una imagen QR" | ||||
| qrmsg_004="El nombre no puede estar vacío." | ||||
| qrmsg_005="El nombre no puede contener espacios." | ||||
| qrmsg_006="El nombre solo puede contener letras, números, ., - y _." | ||||
| qrmsg_007="No se pudo extraer el secreto de la imagen QR seleccionada." | ||||
| qrmsg_008="Secreto guardado correctamente en" | ||||
| qrmsg_009="No se pudo guardar el secreto encriptado." | ||||
| qrmsg_010="Operación cancelada por el usuario." | ||||
| qrmsg_011="Éxito" | ||||
| qrmsg_012="Error" | ||||
| qrmsg_013="Dialog no está instalado" | ||||
| qrmsg_014="Zbar no está instalado" | ||||
| 
 | ||||
| # Mensajes para fjadmin_install.sh | ||||
| fjmsg_000="INSTALADOR DE FORGEJO CLI" | ||||
| fjmsg_001="Instalando Forgejo CLI" | ||||
| fjmsg_002="Cargo no está instalado. Instalando Rust y Cargo..." | ||||
| fjmsg_003="Rust y Cargo han sido instalados correctamente." | ||||
| fjmsg_004="Cargo ya está instalado." | ||||
| fjmsg_005="Forgejo CLI no está instalado. Instalando..." | ||||
| fjmsg_006="ERROR: No se pudo encontrar cargo en el PATH después de la instalación." | ||||
| fjmsg_007="Por favor reinicie su terminal e intente nuevamente." | ||||
| fjmsg_008="Forgejo CLI instalado correctamente." | ||||
| fjmsg_009="ERROR: No se pudo instalar Forgejo CLI." | ||||
| fjmsg_010="Preparando instalación de Forgejo CLI..." | ||||
| fjmsg_011="Instalación completada." | ||||
| fjmsg_012="¿Desea instalar Forgejo CLI?" | ||||
| fjmsg_013="Esta herramienta le permite administrar instancias de Forgejo desde línea de comandos." | ||||
| fjmsg_014="Instalación cancelada por el usuario." | ||||
| 
 | ||||
| # Mensajes para forgejo_login.sh | ||||
| fgmsg_000="INICIO DE SESIÓN EN FORGEJO" | ||||
| fgmsg_001="Error: berg (Forgejo CLI) no está instalado." | ||||
| fgmsg_002="Por favor, ejecute ${BIN_HOME}/${BIN_BASE}/fjadmin_install.sh primero." | ||||
| fgmsg_003="Error: SOPS no está instalado." | ||||
| fgmsg_004="Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias." | ||||
| fgmsg_005="Error: No se encontró el archivo de token para Forgejo." | ||||
| fgmsg_006="Por favor, ejecute bin/cversadm_token.sh para configurar el token primero." | ||||
| fgmsg_007="Usando servidor Forgejo:" | ||||
| fgmsg_008="ADVERTENCIA: No se pudo detectar automáticamente la URL de Forgejo." | ||||
| fgmsg_009="Si la autenticación falla, establezca manualmente BERG_BASE_URL." | ||||
| fgmsg_010="Iniciando sesión en Forgejo..." | ||||
| fgmsg_011="Sesión iniciada correctamente en Forgejo." | ||||
| fgmsg_012="Error al iniciar sesión en Forgejo. Por favor, verifique su token." | ||||
| fgmsg_013="Cerrando sesión de Forgejo..." | ||||
| fgmsg_014="No hay sesión activa en Forgejo." | ||||
| fgmsg_015="Sesión cerrada." | ||||
| 
 | ||||
| # Mensajes para ghadmin_install.sh | ||||
| ghmsg_000="INSTALADOR DE GITHUB CLI" | ||||
| ghmsg_001="Este script requiere privilegios de administrador." | ||||
| ghmsg_002="Intentando escalar privilegios..." | ||||
| ghmsg_003="Usando sudo para escalar privilegios..." | ||||
| ghmsg_004="Usando doas para escalar privilegios..." | ||||
| ghmsg_005="ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." | ||||
| ghmsg_006="Distribución detectada:" | ||||
| ghmsg_007="Instalando GitHub CLI en sistema basado en Debian/Ubuntu..." | ||||
| ghmsg_008="GitHub CLI instalado correctamente." | ||||
| ghmsg_009="ERROR: No se pudo instalar GitHub CLI." | ||||
| ghmsg_010="Instalando GitHub CLI en sistema basado en Red Hat/Fedora..." | ||||
| ghmsg_011="Instalando GitHub CLI en Arch Linux..." | ||||
| ghmsg_012="Instalando GitHub CLI en sistema basado en SUSE..." | ||||
| ghmsg_013="Instalando GitHub CLI en macOS..." | ||||
| ghmsg_014="Homebrew no está instalado. Instalando Homebrew..." | ||||
| ghmsg_015="GitHub CLI ya está instalado." | ||||
| ghmsg_016="Versión actual:" | ||||
| ghmsg_017="¿Desea reinstalar o actualizar? (s/n):" | ||||
| ghmsg_018="Operación cancelada." | ||||
| ghmsg_019="Distribución no soportada:" | ||||
| ghmsg_020="Por favor, visite https://github.com/cli/cli#installation para instrucciones de instalación manual." | ||||
| ghmsg_021="Para autenticarse con GitHub, ejecute:" | ||||
| ghmsg_022="Para más información, visite: https://cli.github.com/manual/" | ||||
| ghmsg_023="ERROR: La instalación de GitHub CLI falló." | ||||
| 
 | ||||
| # Mensajes para gladmin_install.sh | ||||
| glmsg_000="INSTALADOR DE GITLAB CLI" | ||||
| glmsg_001="Este script requiere privilegios de administrador." | ||||
| glmsg_002="Intentando escalar privilegios..." | ||||
| glmsg_003="Usando sudo para escalar privilegios..." | ||||
| glmsg_004="Usando doas para escalar privilegios..." | ||||
| glmsg_005="ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." | ||||
| glmsg_006="Distribución detectada:" | ||||
| glmsg_007="Instalando GitLab CLI mediante Homebrew..." | ||||
| glmsg_008="Homebrew no está instalado. Instalando Homebrew..." | ||||
| glmsg_009="ERROR: No se pudo instalar Homebrew." | ||||
| glmsg_010="GitLab CLI instalado correctamente mediante Homebrew." | ||||
| glmsg_011="ERROR: No se pudo instalar GitLab CLI mediante Homebrew." | ||||
| glmsg_012="Instalando GitLab CLI en sistema basado en Debian/Ubuntu..." | ||||
| glmsg_013="Verificando si glab está disponible en los repositorios..." | ||||
| glmsg_014="GitLab CLI encontrado en los repositorios. Instalando..." | ||||
| glmsg_015="GitLab CLI instalado correctamente desde los repositorios oficiales." | ||||
| glmsg_016="Agregando repositorio oficial de GitLab..." | ||||
| glmsg_017="GitLab CLI instalado correctamente mediante script oficial." | ||||
| glmsg_018="Intentando instalar mediante Homebrew..." | ||||
| glmsg_019="Instalando GitLab CLI en sistema basado en Red Hat/Fedora..." | ||||
| glmsg_020="Usando script oficial de instalación..." | ||||
| glmsg_021="Intentando instalar mediante snap..." | ||||
| glmsg_022="GitLab CLI instalado correctamente mediante snap." | ||||
| glmsg_023="Instalando GitLab CLI en Arch Linux..." | ||||
| glmsg_024="GitLab CLI instalado correctamente desde AUR." | ||||
| glmsg_025="Instalando GitLab CLI en sistema basado en SUSE..." | ||||
| glmsg_026="Intentando instalar GitLab CLI mediante Go..." | ||||
| glmsg_027="Go no está instalado. Se requiere Go para este método de instalación." | ||||
| glmsg_028="GitLab CLI instalado correctamente mediante Go." | ||||
| glmsg_029="Asegúrese de que $GOPATH/bin esté en su PATH." | ||||
| glmsg_030="Por ejemplo, puede agregar lo siguiente a su ~/.bashrc o ~/.zshrc:" | ||||
| glmsg_031="export PATH=$PATH:$HOME/go/bin" | ||||
| glmsg_032="ERROR: No se pudo instalar GitLab CLI mediante Go." | ||||
| glmsg_033="Instalando GitLab CLI usando binarios precompilados..." | ||||
| glmsg_034="Arquitectura no soportada:" | ||||
| glmsg_035="Descargando GitLab CLI desde:" | ||||
| glmsg_036="ERROR: No se pudo descargar GitLab CLI." | ||||
| glmsg_037="ERROR: No se pudo extraer el archivo de GitLab CLI." | ||||
| glmsg_038="GitLab CLI instalado correctamente mediante binarios precompilados." | ||||
| glmsg_039="ERROR: No se pudo instalar GitLab CLI mediante binarios precompilados." | ||||
| glmsg_040="GitLab CLI ya está instalado." | ||||
| glmsg_041="Versión actual:" | ||||
| glmsg_042="¿Desea reinstalar o actualizar? (s/n):" | ||||
| glmsg_043="Operación cancelada." | ||||
| glmsg_044="Distribución no soportada directamente:" | ||||
| glmsg_045="Intentando métodos alternativos..." | ||||
| glmsg_046="Intentando métodos alternativos de instalación..." | ||||
| glmsg_047="No se pudo instalar GitLab CLI con ninguno de los métodos disponibles." | ||||
| glmsg_048="Por favor, visite https://gitlab.com/gitlab-org/cli para instrucciones de instalación manual." | ||||
| glmsg_049="GitLab CLI instalado correctamente." | ||||
| glmsg_050="Para autenticarse con GitLab, ejecute:" | ||||
| glmsg_051="Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md" | ||||
| glmsg_052="ERROR: La instalación de GitLab CLI falló." | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,6 +18,7 @@ head_installing="Instalando" | |||
| head_info="INFO" | ||||
| head_warning="ADVERTENCIA" | ||||
| head_error="ERROR" | ||||
| head_success="ÉXITO" | ||||
| head_unknow="UNKNOW" | ||||
| head_version="Versión" | ||||
| head_ubuntu="ubuntu" | ||||
|  | @ -84,7 +85,9 @@ git_end_commited="Todos los cambios al repositorio nuevo han sido aplicados!" | |||
| git_new_project_pushed="Proyecto ha sido creado/actualizado en repositorio remoto" | ||||
| 
 | ||||
| npm_000="Cortana" | ||||
| npm_000_0="Jarvis" | ||||
| npm_000_1="Rosero One" | ||||
| npm_000_2="Alias" | ||||
| npm_001="El programa 'dialog' no está instalado. Por favor, instálalo e inténtalo nuevamente." | ||||
| npm_002="No eres super usuario. Ingresa la contraseña para escalamiento:" | ||||
| npm_003="Contraseña incorrecta o error al escalar privilegios." | ||||
|  | @ -103,22 +106,22 @@ npm_014="Instalación completada." | |||
| npm_015="Instalación completada. Versiones instaladas: Node.js: [versión] npm: [versión]" | ||||
| npm_016="Instalador de Node.js y npm" | ||||
| npm_017="Confirmar Sistema" | ||||
| npm_018="Instalación" | ||||
| npm_018="Instalación de Anthropic Claude Code" | ||||
| npm_019="Versiones instaladas:" | ||||
| npm_020="No encontrado" | ||||
| npm_021="Instalación Finalizada" | ||||
| npm_022="npm no está instalado. Por favor instálalo e inténtalo de nuevo." | ||||
| npm_023="Se procederá a instalar Anthropoc Claude Code usando npm." | ||||
| npm_023="Se procederá a instalar Anthropic Claude Code usando npm." | ||||
| npm_024="Instalación completada satisfactoriamente." | ||||
| npm_025="Ocurrió un error durante la instalación." | ||||
| npm_026="Desinstalar" | ||||
| npm_027="Se procederá a desinstalar Anthropoc Claude Code usando npm." | ||||
| npm_027="Se procederá a desinstalar Anthropic Claude Code usando npm." | ||||
| npm_028="Desinstalación Completa" | ||||
| npm_029="Desinstalación completada exitosamente." | ||||
| npm_030="Ocurrió un error durante la desinstalación." | ||||
| npm_031="Confirmación" | ||||
| npm_032="¿Está seguro que desea desinstalar Anthropoc Claude Code?" | ||||
| npm_033="¿Desea instalar Anthropoc Claude Code?" | ||||
| npm_032="¿Está seguro que desea desinstalar Anthropic Claude Code?" | ||||
| npm_033="¿Desea instalar Anthropic Claude Code?" | ||||
| npm_034="Alias existente" | ||||
| npm_035="El alias 'cortana' ya existe en" | ||||
| npm_036="Alias creado" | ||||
|  | @ -146,6 +149,7 @@ npm_057="El token contiene caracteres no estándar. Verifique que sea correcto." | |||
| npm_058="El token de Cortana ha sido encriptado exitosamente en" | ||||
| npm_059="Falló la encriptación del token de Cortana." | ||||
| npm_060="Configuración de PATH actualizada. Para aplicar cambios permanentes, reinicie su terminal después de la instalación o ejecute:" | ||||
| 
 | ||||
| hx_001="Instalador de Helix Editor" | ||||
| hx_002="Este script instalará Helix Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)." | ||||
| hx_003="Descargando la última versión de Helix..." | ||||
|  |  | |||
|  | @ -1,11 +1,12 @@ | |||
| #!/bin/bash | ||||
| # npm_install.sh | ||||
| # Script interactivo para instalar Node.js y npm en múltiples sistemas operativos | ||||
| # Soporta: Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew) | ||||
| # Requiere: dialog | ||||
| # Modified: 2025/03/09 10:27:00 | ||||
| # Generado con inteligencia artificial | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # | ||||
| # Script: npm_install.sh | ||||
| # Description: # Script interactivo para instalar Node.js y npm en múltiples sistemas operativos | ||||
| # Created:  2025/03/09 10:27:00  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -20,22 +21,32 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.1 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Función para limpiar la pantalla y salir | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # profile_backup.sh | ||||
| # Modified: 2024/12/09 10:27:00 | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # Script: profile_backup.sh | ||||
| # Description: Script para hacer copia de seguridad del perfil del desarrollador | ||||
| # Created:  2024/12/09 10:27:00 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,37 +21,48 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| 
 | ||||
| # LOAD CONSOLE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/console.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||
| #consolelib_test | ||||
| 
 | ||||
| # LOAD SQLITE3 BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/sqlite.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib | ||||
| #sqlitelib_test | ||||
| 
 | ||||
| # LOAD DEVELOPERS BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/developers.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib | ||||
| #gpglib_test | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head" | ||||
| 
 | ||||
| # Load gpg messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers" | ||||
| 
 | ||||
| 
 | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers" | ||||
| 
 | ||||
| ########### MAIN PROGRAM ########### | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # profile_restore.sh | ||||
| # Modified: 2024/12/15 14:27:00 | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # Script: profile_restore.sh | ||||
| # Description: para restaurar copia de seguridad del perfil del desarrollador | ||||
| # Created:  2024/12/15 14:27:00  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,36 +21,48 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| VERSION=0.98.0 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| 
 | ||||
| # LOAD CONSOLE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/console.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||
| #consolelib_test | ||||
| 
 | ||||
| # LOAD SQLITE3 BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/sqlite.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib | ||||
| #sqlitelib_test | ||||
| 
 | ||||
| # LOAD DEVELOPERS BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/developers.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib | ||||
| #gpglib_test | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head" | ||||
| 
 | ||||
| # Load developers messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers" | ||||
| # Load gpg messages | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers" | ||||
| 
 | ||||
| # Function to display help message | ||||
| function help() { | ||||
|  |  | |||
|  | @ -2,7 +2,10 @@ | |||
| # | ||||
| # Script: project_new.sh | ||||
| # Description: Crea una carpeta de proyecto con la estructura requerida | ||||
| # Modified: 2025-03-12 20:26:07 | ||||
| # Created:  2025-03-12 20:26:07  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||
| # | ||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | ||||
|  | @ -18,17 +21,36 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| # Directorios base | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BASE_DIR="$(dirname "$SCRIPT_DIR")" | ||||
| CONFIG_DIR="$SCRIPT_DIR/config" | ||||
| LIB_DIR="$SCRIPT_DIR/lib" | ||||
| MSG_DIR="$SCRIPT_DIR/msg" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Cargar libraries | ||||
| source "$LIB_DIR/base.lib" | ||||
| source "$LIB_DIR/console.lib" | ||||
| source "$MSG_DIR/head.es" | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| CONFIG_DIR=$BIN_HOME/$BIN_CFGS | ||||
| BASE_DIR=$BIN_HOME | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
|  | @ -102,7 +124,7 @@ function get_projects_folder() { | |||
|     if [ -f "$CONFIG_DIR/projects.dat" ]; then | ||||
|         PROJECTS_DIR_NAME=$(head -n 1 "$CONFIG_DIR/projects.dat") | ||||
|     else | ||||
|         PROJECTS_DIR_NAME="proyectos" | ||||
|         PROJECTS_DIR_NAME="projects" | ||||
|         echo "$PROJECTS_DIR_NAME" > "$CONFIG_DIR/projects.dat" | ||||
|     fi | ||||
|      | ||||
|  | @ -151,7 +173,8 @@ function request_project_name() { | |||
|         if [ $? -eq 0 ]; then | ||||
|             request_project_name | ||||
|         else | ||||
|             echo "${proj_007}" | ||||
|             dialog_error_box "$head_error" "${proj_007}" | ||||
|             clear | ||||
|             exit 1 | ||||
|         fi | ||||
|     fi | ||||
|  | @ -860,6 +883,10 @@ function main() { | |||
|      | ||||
|     # Crear estructura del proyecto | ||||
|     create_project_structure | ||||
|      | ||||
|     # Limpiar Consola | ||||
|     clear | ||||
|      | ||||
| } | ||||
| 
 | ||||
| # Ejecutar función principal | ||||
|  |  | |||
							
								
								
									
										370
									
								
								bin/qr_secret.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										370
									
								
								bin/qr_secret.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,370 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Script: qr_secret.sh | ||||
| # Description: Extrae una contraseña secreta de una imagen QR y la guarda encriptada con SOPS | ||||
| # Created:   2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/15 19:30:00 | ||||
| # [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@rosero.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 | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| # Script: qr_secret.sh | ||||
| # Description: Extrae una contraseña secreta de una imagen QR y la guarda encriptada con SOPS | ||||
| # Created:   2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/15 19:30:00 | ||||
| # [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@rosero.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 | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| # Script: qr_secret.sh | ||||
| # Description: Extrae una contraseña secreta de una imagen QR y la guarda encriptada con SOPS | ||||
| # Created:  2025/03/19 11:57:08 | ||||
| # Modified: 2025/03/15 19:30:00 | ||||
| # [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@rosero.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 | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| apps_title="${qrmsg_000}" | ||||
| 
 | ||||
| # Verificar dependencias | ||||
| check_dependencies() { | ||||
| 
 | ||||
|   # Verificar si zbar está instalado | ||||
|   if ! command -v zbarimg &> /dev/null; then | ||||
|     dialog_error_box "${head_error}" "${qrmsg_014}. ${cvmsg_014}" | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
| 
 | ||||
|   # Verificar si sops está instalado | ||||
|   if ! command -v sops &> /dev/null; then | ||||
|     dialog_error_box "${head_error}" "${cvmsg_013}. ${cvmsg_014}" | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| # Validar formato del nombre | ||||
| validate_name() { | ||||
|   local name="$1" | ||||
|    | ||||
|   # Verificar si el nombre está vacío | ||||
|   if [ -z "$name" ]; then | ||||
|     return 1 | ||||
|   fi | ||||
|    | ||||
|   # Verificar si el nombre contiene espacios | ||||
|   if [[ "$name" =~ [[:space:]] ]]; then | ||||
|     return 2 | ||||
|   fi | ||||
|    | ||||
|   # Verificar si el nombre contiene caracteres no permitidos | ||||
|   if ! [[ "$name" =~ ^[a-zA-Z0-9._-]+$ ]]; then | ||||
|     return 3 | ||||
|   fi | ||||
|    | ||||
|   return 0 | ||||
| } | ||||
| 
 | ||||
| # Solicitar nombre del archivo | ||||
| get_output_name() { | ||||
|   local name="" | ||||
|   local valid=false | ||||
|    | ||||
|   while [ "$valid" != "true" ]; do | ||||
|     # Solicitar nombre | ||||
|     dialog_input_box "${qrmsg_001}" "${qrmsg_002}" "" | ||||
|      | ||||
|     if [ $codex -ne 0 ]; then | ||||
|       # Usuario canceló | ||||
|       return 1 | ||||
|     fi | ||||
|      | ||||
|     name="$value" | ||||
|      | ||||
|     # Validar nombre | ||||
|     validate_name "$name" | ||||
|     local validation_result=$? | ||||
|      | ||||
|     case $validation_result in | ||||
|       0) | ||||
|         valid="true" | ||||
|         ;; | ||||
|       1) | ||||
|         dialog_error_box "${qrmsg_012}" "${qrmsg_004}" | ||||
|         ;; | ||||
|       2) | ||||
|         dialog_error_box "${qrmsg_012}" "${qrmsg_005}" | ||||
|         ;; | ||||
|       3) | ||||
|         dialog_error_box "${qrmsg_012}" "${qrmsg_006}" | ||||
|         ;; | ||||
|     esac | ||||
|   done | ||||
|    | ||||
|   echo "$name" | ||||
|   return 0 | ||||
| } | ||||
| 
 | ||||
| # Extraer secreto de imagen QR | ||||
| extract_secret() { | ||||
|   local qr_file="$1" | ||||
|    | ||||
|   # Usar zbarimg para extraer el texto del QR | ||||
|   local secret=$(zbarimg --quiet --raw "$qr_file") | ||||
|   local result=$? | ||||
|    | ||||
|   if [ $result -ne 0 ] || [ -z "$secret" ]; then | ||||
|     return 1 | ||||
|   fi | ||||
|    | ||||
|   # Si el secreto comienza con "otpauth://", extraer solo el secreto | ||||
|   if [[ "$secret" == otpauth://* ]]; then | ||||
|     # Extraer el valor después de "secret=" | ||||
|     secret=$(echo "$secret" | grep -oP 'secret=\K[A-Z0-9]+') | ||||
|      | ||||
|     # Si no se pudo extraer el secreto, mostrar error | ||||
|     if [ -z "$secret" ]; then | ||||
|       return 2 | ||||
|     fi | ||||
|   fi | ||||
|    | ||||
|   echo "$(echo "$secret" | base64)" | ||||
|   return 0 | ||||
| } | ||||
| 
 | ||||
| # Guardar secreto encriptado con SOPS | ||||
| save_encrypted_secret() { | ||||
|   local name="$1" | ||||
|   local secret="$2" | ||||
|   local output_file="${DEVELOPER_DIR}/${name}.totp.yaml" | ||||
|    | ||||
|   # Crear archivo YAML temporal con el secreto | ||||
|   local temp_file=$(mktemp) | ||||
|   echo "secret: $secret" > "$temp_file" | ||||
|    | ||||
|   # Encriptar el archivo con SOPS | ||||
|   sops --encrypt "$temp_file" > "$output_file" | ||||
|   local result=$? | ||||
|    | ||||
|   # Eliminar archivo temporal | ||||
|   rm -f "$temp_file" | ||||
|    | ||||
|   # Establecer permisos adecuados | ||||
|   if [ $result -eq 0 ]; then | ||||
|     chmod 600 "$output_file" | ||||
|     return 0 | ||||
|   else | ||||
|     return 1 | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| # Función principal | ||||
| main() { | ||||
|    | ||||
|   # Verificar si dialog está instalado | ||||
|   if ! command -v dialog &> /dev/null; then | ||||
|     # Sin dialog, tenemos que usar echo | ||||
|     echo "Error: ${qrmsg_013}. ${cvmsg_014}" | ||||
|     exit 1 | ||||
|   fi | ||||
|    | ||||
|   # Verificar dependencias | ||||
|   check_dependencies | ||||
|    | ||||
|   # Seleccionar archivo QR | ||||
|   # Usar dialog_input_filepath de console.lib para seleccionar un archivo | ||||
|   local home_dir="$HOME/*.jpg" | ||||
|   dialog_input_filepath "$home_dir" "${qrmsg_003}" | ||||
|   if [ $? -ne 0 ]; then | ||||
|     clear | ||||
|     dialog_error_box "${head_info}" "${qrmsg_010}" | ||||
|     exit 0 | ||||
|   fi | ||||
|   | ||||
|   # Verificar el resultado | ||||
|   if [ "$valid_file" == "1" ]; then | ||||
|     qr_file="$result" | ||||
|     return 0 | ||||
|   else | ||||
|     # Usuario canceló o no seleccionó un archivo válido | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
|   # Extraer secreto de la imagen QR | ||||
|   local secret=$(extract_secret "$qr_file") | ||||
|   local extract_status=$? | ||||
|    | ||||
|   # Solicitar nombre del archivo | ||||
|   local output_name=$(get_output_name) | ||||
|   if [ $? -ne 0 ]; then | ||||
|     clear | ||||
|     dialog_error_box "${head_info}" "${qrmsg_010}" | ||||
|     exit 0 | ||||
|   fi | ||||
|    | ||||
|    | ||||
|   if [ $extract_status -ne 0 ]; then | ||||
|     dialog_error_box "${qrmsg_012}" "${qrmsg_007}" | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
|    | ||||
|   # Guardar secreto encriptado | ||||
|   save_encrypted_secret "$output_name" "$secret" | ||||
|   if [ $? -eq 0 ]; then | ||||
|     dialog_error_box "${qrmsg_011}" "${qrmsg_008} ${DEVELOPER_DIR}/${output_name}.totp.yaml" | ||||
|   else | ||||
|     dialog_error_box "${qrmsg_012}" "${qrmsg_009}" | ||||
|     clear | ||||
|     exit 1 | ||||
|   fi | ||||
|    | ||||
|   clear | ||||
| } | ||||
| 
 | ||||
| # Ejecutar función principal | ||||
| main | ||||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # update.sh | ||||
| # Modified: 2024/12/01 15:27:00 | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # Script: update.sh | ||||
| # Description: Script para update.sh | ||||
| # Created:  2025/03/15 18:25:00  | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,16 +21,25 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| 
 | ||||
| load_bootstrap_msg() { | ||||
|  | @ -59,7 +72,7 @@ else | |||
| fi | ||||
| 
 | ||||
| # Load bootstrap library for update functions | ||||
| source $BIN_HOME/$BIN_LIBS/bootstrap.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/bootstrap.lib | ||||
| 
 | ||||
| # Update sistema operativo y repositorios primero (no requiere privilegios de root) | ||||
| echo -e "\n${head_info}: Actualizando repositorios locales primero..." | ||||
|  | @ -182,5 +195,36 @@ else | |||
|   echo -e "Para instalar estas dependencias, ejecute bin/bootstrap.sh primero." | ||||
| fi | ||||
| 
 | ||||
| # Actualizar herramientas adicionales si están instaladas | ||||
| update_additional_tools() { | ||||
|   local BIN_PATH=$1 | ||||
|   local LIBRARY=$2 | ||||
|   local MESSAGES=$3 | ||||
|   local UPDATE_LANG=$4 | ||||
|    | ||||
|   # Cargar biblioteca bootstrap para acceder a las funciones de instalación | ||||
|   source "$BIN_PATH/$BIN_BASE/$LIBRARY/bootstrap.lib" | ||||
|    | ||||
|   # Actualizar oathtool si está instalado | ||||
|   command_installed oathtool | ||||
|   if [ $? -eq 0 ]; then | ||||
|     echo -e "\n${head_info}: Actualizando oathtool..." | ||||
|     oathtool_install | ||||
|     echo -e "${head_info}: oathtool actualizado correctamente." | ||||
|   fi | ||||
|    | ||||
|   # Actualizar zbar si está instalado | ||||
|   command_installed zbar-tools | ||||
|   if [ $? -eq 0 ]; then | ||||
|     echo -e "\n${head_info}: Actualizando zbar..." | ||||
|     zbar_install | ||||
|     echo -e "${head_info}: zbar actualizado correctamente." | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| # Actualizar herramientas adicionales con sudo si están instaladas | ||||
| echo -e "\n${head_info}: Verificando herramientas adicionales..." | ||||
| sudo bash -c "$(declare -f command_installed; declare -f update_additional_tools); update_additional_tools $BIN_HOME/$BIN_BASE $BIN_LIBS $BIN_MESG $BIN_LANG" | ||||
| 
 | ||||
| echo -e "\n${head_info}: Proceso de actualización completado." | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # vpn_install.sh | ||||
| # Modified: 2024/12/01 15:27:00 | ||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | ||||
| # Script: vpn_install.sh | ||||
| # Description: Script para vpn_install.sh | ||||
| # Created:  2024/12/01 15:27:00 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,18 +21,34 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| VERSION=1.0.1 | ||||
| # Configuración inicial | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| 
 | ||||
| # Variables globales | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| function load_bootstrap_msg() { | ||||
| 
 | ||||
|  | @ -92,9 +112,6 @@ function install() { | |||
|     esac | ||||
| } | ||||
| 
 | ||||
| # Load messages | ||||
| load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG | ||||
| 
 | ||||
| # Check for arguments option | ||||
| help=false | ||||
| version=false | ||||
|  | @ -131,7 +148,8 @@ if $version; then | |||
| fi | ||||
| 
 | ||||
| # Display Headers | ||||
| display_devstools_header "- $title" | ||||
| display_devstools_header "PRITUNL VPN" | ||||
| 
 | ||||
| # Run install with sudo | ||||
| sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG $update" | ||||
| BIN_USER=$(echo $BIN_HOME/$BIN_BASE) | ||||
| sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_USER $BIN_LIBS $BIN_MESG $BIN_LANG $update" | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # vpn_users.sh | ||||
| # Modified: 2024/12/01 15:27:00 | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | ||||
| # Script: vpn_users.sh | ||||
| # Description: Script para vpn_users.sh | ||||
| # Created:  2024/12/01 15:27:00 | ||||
| # Modified: 2025/03/19 11:57:08 | ||||
| # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||
| # | ||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.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 | ||||
|  | @ -17,31 +21,42 @@ | |||
| # 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/>. | ||||
| 
 | ||||
| DEVSPATH=devs | ||||
| BIN_HOME=$HOME/$DEVSPATH | ||||
| BIN_MESG=bin/msg | ||||
| BIN_LIBS=bin/lib | ||||
| BIN_CFGS=bin/config | ||||
| VERSION=1.0.1 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_PATH=$BIN_HOME/$BIN_BASE | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # LOAD BASE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/base.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||
| #baselib_test | ||||
| 
 | ||||
| 
 | ||||
| # LOAD CONSOLE BASH LIBRARY | ||||
| source $BIN_HOME/$BIN_LIBS/console.lib | ||||
| source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||
| #consolelib_test | ||||
| 
 | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head" | ||||
| 
 | ||||
| # Load head messages | ||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "pritunl" | ||||
| load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "pritunl" | ||||
| 
 | ||||
| # Function to display help message | ||||
| function help() { | ||||
|  | @ -61,7 +76,7 @@ function vpn_pritunl_users_form() { | |||
| 
 | ||||
|   declare -a ARRAY | ||||
|   c_val[0]=013 | ||||
|   read_file_to_array "${BIN_HOME}/${BIN_CFGS}/pritunl-orgs.dat" | ||||
|   read_file_to_array "${BIN_HOME}/${BIN_BASE}/${BIN_CFGS}/pritunl-orgs.dat" | ||||
|   if [ $? -ne 0 ]; then | ||||
|     ARRAY[0]="" | ||||
|     c_val[0]=0 | ||||
|  | @ -104,10 +119,10 @@ function vpn_pritunl_users_form() { | |||
|     display_devstools_header "${plmsg_000}" | ||||
|     if [ "${action}" != "remove" ] | ||||
|     then | ||||
|       ansible-playbook -i ${BIN_HOME}/inventory/base.ini ${BIN_HOME}/bin/ansible/pritunl_users.yaml \ | ||||
|       ansible-playbook -i ${BIN_HOME}/inventory/base.ini ${BIN_HOME}/${BIN_BASE}/${BIN_ANSIBLE}/pritunl_users.yaml \ | ||||
|         -e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]} input_pritunl_email=${response[2]}" | ||||
|     else | ||||
|       ansible-playbook -i $BIN_HOME/inventory/base.ini ${BIN_HOME}/bin/ansible/pritunl_users.yaml \ | ||||
|       ansible-playbook -i $BIN_HOME/inventory/base.ini ${BIN_HOME}/${BIN_BASE}/${BIN_ANSIBLE}/pritunl_users.yaml \ | ||||
|         -e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]}" | ||||
|     fi | ||||
|     read -p "${head_pause}" | ||||
|  |  | |||
							
								
								
									
										21
									
								
								sops/jarvis.sops.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								sops/jarvis.sops.yaml
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| { | ||||
| 	"data": "ENC[AES256_GCM,data:0QDmEqXpOKs0v1ga5BGLKBMUfG3oonXdwJywtiZEuDzOflSFO9wteezYIz2na85Zlli5I+pYUpt96lg43ZqZ9ZiyCrpfrfuDqcVscVSr9iWc+rMAYjLVBUZI5+gH1PsUZFlG5o+ioKl+tYunFU9hKx7FbHRFIe1AGbweoDxy6mMjqwxHwdopoHoV+8zoSqK5XFo=,iv:HdXQhmFARl9mlAIxfHFjrKT6+wG0SZQ0yvVH9W9yruw=,tag:5wAk2e5wXi5ckDA25tK5kA==,type:str]", | ||||
| 	"sops": { | ||||
| 		"kms": null, | ||||
| 		"gcp_kms": null, | ||||
| 		"azure_kv": null, | ||||
| 		"hc_vault": null, | ||||
| 		"age": null, | ||||
| 		"lastmodified": "2025-03-19T19:20:07Z", | ||||
| 		"mac": "ENC[AES256_GCM,data:OdAbCBM749u+2jNyWCeqWEZjQhZPBbrFX5D+D00oFCMHdU1SFPE4+7+bcGdjS2sdzgU5VQJhj72RRK0RYToRBQDoW17lmXHhvShrXAfHmtCr27ikjDTRnecBFgGOrzk3LkADtNj33w0U7OeQjC5BzLBXlIJzRCjoAFigXIbvrUA=,iv:8mFrzFyUTx43Pk8ntw7MGc3y2MDgGLBz2lNQQe1J4IA=,tag:dmwrgkBntqtG9z0aNjnCOg==,type:str]", | ||||
| 		"pgp": [ | ||||
| 			{ | ||||
| 				"created_at": "2025-03-19T19:20:07Z", | ||||
| 				"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/ARAAwYo+n42glMyddN5Ci5aKAp6Eg8rJKSQnzFKAT9CBHCeV\n8p9uymDsEq/BBaUDr3s7uFHHSwMgJLYUfAFcAXC7nFInxQ1t1miUr45njIaKMTuX\nnr72Y6U2xwYlY0vzYC4hmBiedJyRbBV8AIveZLZdhugGq6bsrdJOHjyC67JwwmKX\nZwgmLaCS6qDxoIKnyFIoPWVz4FZCE4y6A27fkXpSjU70/8yZC9ghMN1IXFNsJx6C\nrsyS0tyIwZcz5MSWcSNczgpzC9+UJFGAvZwR2geyUi0xrZpuXD2NAmU2nklG+YsN\ntbdJErFmWvZZBi6Si6AxHaHZLDgGsZq6DltBSjN/ySuNVeZ7M3opi28bHKFwYC2J\n9AAUhNzQIDBA4MQrPLy1u3C6PB6AS6aZ9jnVm3IeWyQUZ0Pk5Xysvp9Re230gMTy\nfR4rESQ0RohBMpMptlYEAZR/PebPSMnH5wikvb84FIROhhcEbn29lOw/ssEHdj7D\nO0VdqDLoW6znHCiuB5NfIxV4x98c5e2/c0KYiZQqRFmGuSndB17M5S8knD8VSJ83\nUIrQtH+Mjp1Yifx4AvPa2TQrmaQNH7dcjtkd5Tqun8NoBYUPv8jTH36ti+lyt2gZ\nSwegV+bTaeMZhvOsc1k2MAtchv8nKno8NQberUIytZteoWJWZs+iBd1/VFBpF4zS\nXgHeYOAtI0FjkX4kVrANwtFcFe7E7/6HgXeUNn2seuapqWp1/1TuVjzv+KM5R+3a\nAk4pwoi0wQnjj0Jk1qE7kDUrQGAxP/gb117ACEewOh1BogMZWvw0YW5xa53iPz4=\n=+/ik\n-----END PGP MESSAGE-----", | ||||
| 				"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07" | ||||
| 			} | ||||
| 		], | ||||
| 		"unencrypted_suffix": "_unencrypted", | ||||
| 		"version": "3.9.2" | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in a new issue