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/config/ | ||||||
| !bin/ansible/ | !bin/ansible/ | ||||||
| !inventory/ | !inventory/ | ||||||
| !templates/ |  | ||||||
| !sops/ | !sops/ | ||||||
| !proyectos/ | !projects/ | ||||||
| 
 | 
 | ||||||
| # Permitir el seguimiento de archivos específicos | # Permitir el seguimiento de archivos específicos | ||||||
| # !archivo1.txt | # !archivo1.txt | ||||||
| !README.md | !README.md | ||||||
|  | !CLUADE.md | ||||||
| !.gitignore | !.gitignore | ||||||
| 
 | 
 | ||||||
| # Ignorar archivos específicos |  | ||||||
| CLAUDE.md |  | ||||||
| bin/config/rates/ |  | ||||||
| 
 |  | ||||||
| # Permitir archivos en carpetas específicas | # Permitir archivos en carpetas específicas | ||||||
| # !carpeta1/*.txt | # !carpeta1/*.txt | ||||||
| !bin/* | !bin/* | ||||||
| !bin/lib/* | !bin/lib/* | ||||||
| !bin/msg/* | !bin/msg/* | ||||||
| !bin/config/* | !bin/config/** | ||||||
| !bin/ansible/** | !bin/ansible/** | ||||||
| !inventory/** | !inventory/** | ||||||
| !templates/** |  | ||||||
| !sops/*.yaml | !sops/*.yaml | ||||||
|  |  | ||||||
|  | @ -18,17 +18,21 @@ | ||||||
| 
 | 
 | ||||||
| ## Development Practices | ## Development Practices | ||||||
| - Use `bin/lib/base.lib` for common functions | - 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) | - Message files stored in `bin/msg/` (multilingual support) | ||||||
| - Configuration in `bin/config/` directory | - 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 | - 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 | - All shell scripts (.sh) and Python scripts (.py) must be placed in the `bin/` directory unless explicitly specified otherwise | ||||||
| 
 | 
 | ||||||
| ## Authorship Policy | ## 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>" | - 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 | - Include reference indicating generation by Claude Code and the version used | ||||||
| - Example header comment: | - Example header comment: | ||||||
|   ``` |   ``` | ||||||
|   # [Author] Cortana Rosero One <cortana@rosero.one> |   # [Author] Cortana Rosero One <cortana@rosero.one> | ||||||
|   # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) |   # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||||
|   ``` |   ``` | ||||||
|  |  | ||||||
|  | @ -38,10 +38,8 @@ bin/update.sh | ||||||
| 
 | 
 | ||||||
| | Comando | Descripción | | | Comando | Descripción | | ||||||
| |---------|-------------| | |---------|-------------| | ||||||
| | `bin/bootstrap.sh` | Instala herramientas básicas y configura la gestión de contenedores | | | `bin/bootstrap.sh` | Instala herramientas básicas (incluyendo oathtool y zbar) y configura la gestión de contenedores | | ||||||
| | `bin/bootstrap.sh --oathtool` | Instala únicamente oathtool (herramienta para TOTP/HOTP) | | | `bin/update.sh` | Actualiza el entorno de desarrollo y herramientas (incluyendo oathtool y zbar) | | ||||||
| | `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/npm_install.sh` | Instala NodeJS y npm de forma interactiva | | | `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 | | | `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 | | | 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` | Instala el cliente Pritunl VPN | | ||||||
| | `bin/vpn_install.sh --update` | Actualiza el cliente VPN a la última versión | | | `bin/vpn_install.sh --update` | Actualiza el cliente VPN a la última versión | | ||||||
| | `bin/vpn_users.sh` | Gestiona usuarios de la VPN | | | `bin/vpn_users.sh` | Gestiona usuarios de la VPN | | ||||||
|  |  | ||||||
							
								
								
									
										117
									
								
								bin/bootstrap.sh
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								bin/bootstrap.sh
									
									
									
									
									
								
							|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/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 | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_MESG=bin/msg | 
 | ||||||
| BIN_LIBS=bin/lib | # 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| #baselib_test | 
 | ||||||
|  | # 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() { | load_bootstrap_msg() { | ||||||
| 
 | 
 | ||||||
|  | @ -48,7 +69,6 @@ install() { | ||||||
| 	local LIBRARY=$2 | 	local LIBRARY=$2 | ||||||
| 	local MESSAGES=$3 | 	local MESSAGES=$3 | ||||||
|     local INSTALL_LANG=$4 |     local INSTALL_LANG=$4 | ||||||
|     local PACKAGE_ONLY=$5  # Paquete específico a instalar (opcional) |  | ||||||
| 
 | 
 | ||||||
|     local PYTHON_PACKAGE=python3 |     local PYTHON_PACKAGE=python3 | ||||||
|     local GIT_PACKAGE=git |     local GIT_PACKAGE=git | ||||||
|  | @ -75,32 +95,6 @@ install() { | ||||||
| 	# Load bootstrap messages | 	# Load bootstrap messages | ||||||
| 	load_bootstrap_msg $BIN_PATH $MESSAGES $INSTALL_LANG | 	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 | 	# Install wget from OS Packages | ||||||
| 	command_installed $WGET_PACKAGE | 	command_installed $WGET_PACKAGE | ||||||
| 	if [ $? -ne 0 ] | 	if [ $? -ne 0 ] | ||||||
|  | @ -188,41 +182,30 @@ install() { | ||||||
| 	then | 	then | ||||||
| 	  echo "$domsg_005" | 	  echo "$domsg_005" | ||||||
| 	fi | 	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 messages | ||||||
| load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG | load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG | ||||||
| 
 | 
 | ||||||
| # Procesar argumentos | # Display Headers | ||||||
| PACKAGE_TO_INSTALL="" | display_devstools_header "- $bomsg_000" | ||||||
| 
 | 
 | ||||||
| if [ $# -ge 1 ]; then | # Run install with sudo (sin parámetros específicos) | ||||||
|   case "$1" in | sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG" | ||||||
|     "--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_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 |  | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # cortana_install.sh | # Script: claude_install.sh | ||||||
| # Modified: 2024/12/01 15:27:00 | # Description: Script para instalar o desinstalar Anthropoc Claude Code con npm | ||||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | # 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 | # 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 | # 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 | # Script para instalar o desinstalar Anthropoc Claude Code con npm | ||||||
| # Uso: | # Uso: | ||||||
| #   ./script.sh          -> Instalación | #   ./claude_install.sh          -> Instalación | ||||||
| #   ./script.sh -u       -> Desinstalación | #   ./claude_install -u          -> Desinstalación | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.1 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| #baselib_test |  | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # Verificar que 'dialog' esté instalado | # Verificar que 'dialog' esté instalado | ||||||
| if ! command -v dialog &>/dev/null; then | if ! command -v dialog &>/dev/null; then | ||||||
|   echo "${npm_001}" |   echo "${npm_001}" | ||||||
|  | @ -50,10 +63,10 @@ fi | ||||||
| # Verificar que 'npm' esté instalado | # Verificar que 'npm' esté instalado | ||||||
| if ! command -v npm &>/dev/null; then | if ! command -v npm &>/dev/null; then | ||||||
|   dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_022}" 7 50 |   dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_022}" 7 50 | ||||||
|   exit 1 |   ${BIN_HOME}/${BIN_BASE}/npm_install.sh | ||||||
| fi | 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() { | pre_anthropic() { | ||||||
|   # First, save a list of your existing global packages for later migration |   # First, save a list of your existing global packages for later migration | ||||||
|   npm list -g --depth=0 > ~/npm-global-packages.txt |   npm list -g --depth=0 > ~/npm-global-packages.txt | ||||||
|  | @ -95,7 +108,7 @@ pre_anthropic() { | ||||||
| 
 | 
 | ||||||
| # Función para instalar Anthropoc Claude Code | # Función para instalar Anthropoc Claude Code | ||||||
| install_anthropic() { | 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 |   # Ejecutar la instalación | ||||||
|   pre_anthropic |   pre_anthropic | ||||||
|   npm install -g @anthropic-ai/claude-code |   npm install -g @anthropic-ai/claude-code | ||||||
|  | @ -109,7 +122,7 @@ install_anthropic() { | ||||||
| 
 | 
 | ||||||
| # Función para desinstalar Anthropoc Claude Code | # Función para desinstalar Anthropoc Claude Code | ||||||
| uninstall_anthropic() { | 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 |   # Ejecutar la desinstalación | ||||||
|   npm uninstall -g @anthropic-ai/claude-code |   npm uninstall -g @anthropic-ai/claude-code | ||||||
|   if [[ $? -eq 0 ]]; then |   if [[ $? -eq 0 ]]; then | ||||||
|  | @ -127,6 +140,7 @@ if [[ "$1" == "-u" ]]; then | ||||||
|     uninstall_anthropic |     uninstall_anthropic | ||||||
|   else |   else | ||||||
|     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 |     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||||
|  |     clear | ||||||
|     exit 1 |     exit 1 | ||||||
|   fi |   fi | ||||||
| else | else | ||||||
|  | @ -135,7 +149,11 @@ else | ||||||
|     install_anthropic |     install_anthropic | ||||||
|   else |   else | ||||||
|     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 |     dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||||
|  |     clear | ||||||
|     exit 1 |     exit 1 | ||||||
|   fi |   fi | ||||||
| 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 | #!/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 | # Verificar si ~/.npm-global/bin está en el PATH | ||||||
| if [[ ":$PATH:" != *":$HOME/.npm-global/bin:"* ]]; then | if [[ ":$PATH:" != *":$HOME/.npm-global/bin:"* ]]; then | ||||||
|   # Si no está en el PATH, usamos la ruta completa en el alias |   # 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 |   # Si está en el PATH, podemos usar el nombre directamente | ||||||
|   alias cortana="claude" |   alias cortana="claude" | ||||||
| fi | fi | ||||||
| 
 | echo "Alias cortana activado en la sesión actual." | ||||||
| # 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 | # Script: cortana_disable.sh | ||||||
| # | # Description: # Script para desactivar el alias 'cortana' para Claude Code | ||||||
| # cortana_disable.sh | # Created:  2025/03/19 11:57:08 | ||||||
| # Modified: 2025/03/11 12:00:00 | # 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 | # 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 | # 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 | # Script para desactivar el alias 'cortana' para Claude Code | ||||||
| # Uso: | # Uso: | ||||||
| #   ./cortana_disable.sh | #   ./cortana_disable.sh | ||||||
|  | # Nota: no usa console.lib, ni console.es | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.0 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| 
 | 
 | ||||||
| # Verificar que 'dialog' esté instalado | # Verificar que 'dialog' esté instalado | ||||||
|  | @ -62,4 +76,7 @@ if [[ $? -eq 0 ]]; then | ||||||
| else | else | ||||||
|   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 |   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
|  | 
 | ||||||
|  | # Limpiar consola | ||||||
|  | clear | ||||||
|  |  | ||||||
|  | @ -1,8 +1,10 @@ | ||||||
| #!/bin/bash | # Script: cortana_enable.sh | ||||||
| # | # Description: # Script para activar el alias 'cortana' para Claude Code | ||||||
| # cortana_enable.sh | # Created:  2025/03/19 11:57:08 | ||||||
| # Modified: 2025/03/11 12:00:00 | # 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 | # 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 | # 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 | # 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/>. | # 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: | # Uso: | ||||||
| #   ./cortana_enable.sh | #   ./cortana_enable.sh | ||||||
|  | # Nota: no usa console.lib, ni console.es | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.0 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| 
 | 
 | ||||||
| # Verificar que 'dialog' esté instalado | # Verificar que 'dialog' esté instalado | ||||||
| if ! command -v dialog &>/dev/null; then | if ! command -v dialog &>/dev/null; then | ||||||
|   echo "${npm_001}" |   echo "${npm_001}" | ||||||
|  |   clear | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | 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 |   dialog --backtitle "${title}" --title "${npm_036}" --msgbox "${npm_037}\n\n${npm_047}\n\nsource $ALIAS_FILE\n\n" 10 70 | ||||||
| else | else | ||||||
|   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 |   dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 | ||||||
|  |   clear | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
|  | 
 | ||||||
|  | # Limpiar consola | ||||||
|  | clear | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # cortana_token.sh | # Script: cortana_token.sh | ||||||
| # Modified: 2025-03-12 20:26:07 | # Description: Script para encriptar el token de Claude Code usando SOPS | ||||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | # 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 | # 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 | # 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 | # 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/>. | # 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 | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.0 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| 
 | 
 | ||||||
| check_dependencies() { | check_dependencies() { | ||||||
|  | @ -149,10 +165,11 @@ main() { | ||||||
|         dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} ${HOME}/.cortana/cortana.sops.yaml" 7 70 |         dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} ${HOME}/.cortana/cortana.sops.yaml" 7 70 | ||||||
|     else |     else | ||||||
|         dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50 |         dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50 | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Execute main function | # Execute main function | ||||||
| main | main | ||||||
| exit 0 | exit 0 | ||||||
|  |  | ||||||
							
								
								
									
										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 | #!/bin/bash | ||||||
| # | # | ||||||
| # Script: cversadm_token.sh | # Script: cversion_token.sh | ||||||
| # Description: Administrador de tokens para plataformas de control de versiones | # 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> | # [Author] Cortana Rosero One <cortana@rosero.one> | ||||||
| # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | # [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 | # 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 | # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||||
|  | @ -24,36 +25,33 @@ | ||||||
| # Configuración inicial | # Configuración inicial | ||||||
| # Usar DEVELOPER_DIR de base.lib | # Usar DEVELOPER_DIR de base.lib | ||||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | 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 | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") |   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||||
| else | else | ||||||
|   DEVSPATH="devs" |   DEVSPATH="devs" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| BIN_HOME="$HOME/$DEVSPATH" | BIN_HOME="$HOME/$DEVSPATH" | ||||||
| BIN_BASE="bin" | VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||||
| 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" |  | ||||||
| 
 | 
 | ||||||
| # CHECK SHELL LANGUAGE | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | 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 | # 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}" "head" | ||||||
|  | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "console" | ||||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||||
| 
 |  | ||||||
| # Variables globales |  | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| apps_title="${cvmsg_000}" | apps_title="${cvmsg_000}" | ||||||
| 
 | 
 | ||||||
|  | @ -79,13 +77,7 @@ ensure_developers_dir() { | ||||||
| # Función para seleccionar la plataforma de control de versiones usando menu_actions | # Función para seleccionar la plataforma de control de versiones usando menu_actions | ||||||
| select_platform() { | select_platform() { | ||||||
|   # Preparar opciones para menu_actions |   # Preparar opciones para menu_actions | ||||||
|   local menu_options="1:${cvmsg_010} |   local menu_options="1:${cvmsg_010}\n2:${cvmsg_011}\n3:${cvmsg_012}" | ||||||
| 2:${cvmsg_011} |  | ||||||
| 3:${cvmsg_012} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| " |  | ||||||
|    |    | ||||||
|   # Usar menu_actions en lugar de dialog_input_menu |   # Usar menu_actions en lugar de dialog_input_menu | ||||||
|   local selection=$(menu_actions "${cvmsg_002}" "$menu_options" 9) |   local selection=$(menu_actions "${cvmsg_002}" "$menu_options" 9) | ||||||
|  | @ -118,33 +110,35 @@ request_token() { | ||||||
|     "forgejo") platform_name="${cvmsg_012}" ;; |     "forgejo") platform_name="${cvmsg_012}" ;; | ||||||
|   esac |   esac | ||||||
|    |    | ||||||
|   # Bucle para validación de token usando dialog directamente |   # Bucle para validación de token usando funciones de console.lib | ||||||
|   while true; do |   while true; do | ||||||
|     # Usar dialog directamente en lugar de dialog_input_pass |     # Usar dialog_input_pass de console.lib | ||||||
|     token=$(dialog --backtitle "$title" --stdout --title "${cvmsg_003}" \ |     dialog_input_pass "${cvmsg_004} $platform_name" "${cvmsg_005}" | ||||||
|            --passwordbox "${cvmsg_004} $platform_name\n${cvmsg_005}" 8 60) |  | ||||||
|      |      | ||||||
|     # Verificar si el usuario canceló |     # Verificar si el usuario canceló | ||||||
|     if [ $? -ne 0 ]; then |     if [ $codex -ne 0 ]; then | ||||||
|       clear |       clear | ||||||
|       return 1 |       return 1 | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|  |     # Obtener token de la variable value establecida por dialog_input_pass | ||||||
|  |     token="$value" | ||||||
|  |      | ||||||
|     # Validar token |     # Validar token | ||||||
|     if [ -z "$token" ]; then |     if [ -z "$token" ]; then | ||||||
|       dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_015}" 7 60 |       dialog_error_box "${head_error}" "${cvmsg_015}" | ||||||
|       continue |       continue | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Verificar longitud (debería tener al menos 30 caracteres) |     # Verificar longitud (debería tener al menos 30 caracteres) | ||||||
|     if [ ${#token} -lt 30 ]; then |     if [ ${#token} -lt 30 ]; then | ||||||
|       dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_016}" 7 60 |       dialog_error_box "${head_error}" "${cvmsg_016}" | ||||||
|       continue |       continue | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Verificar formato (debería contener caracteres alfanuméricos y algunos especiales) |     # Verificar formato (debería contener caracteres alfanuméricos y algunos especiales) | ||||||
|     if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then |     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 |     fi | ||||||
|      |      | ||||||
|     # Token válido |     # Token válido | ||||||
|  | @ -197,16 +191,7 @@ main() { | ||||||
|   check_dialog_installed |   check_dialog_installed | ||||||
|   check_sops_installed |   check_sops_installed | ||||||
|   ensure_developers_dir |   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 |   # Seleccionar plataforma | ||||||
|   platform=$(select_platform) |   platform=$(select_platform) | ||||||
|   if [ $? -ne 0 ]; then |   if [ $? -ne 0 ]; then | ||||||
|  | @ -231,7 +216,7 @@ main() { | ||||||
|       "forgejo") platform_name="${cvmsg_012}" ;; |       "forgejo") platform_name="${cvmsg_012}" ;; | ||||||
|     esac |     esac | ||||||
|      |      | ||||||
|     dialog_error_box "${cvmsg_009}" "${cvmsg_006} $platform_name" |     dialog_error_box "${head_info}" "${cvmsg_006} $platform_name" | ||||||
|   else |   else | ||||||
|     local platform_name="" |     local platform_name="" | ||||||
|     case $platform in |     case $platform in | ||||||
|  | @ -247,4 +232,4 @@ main() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Ejecutar función principal | # Ejecutar función principal | ||||||
| main | main | ||||||
							
								
								
									
										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 | #!/bin/bash | ||||||
| # | # | ||||||
| # Script: fj_login.sh | # Script: forgejo_login.sh | ||||||
| # Description: Script para autenticación con Forgejo usando tokens encriptados | # 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> | # [Author] Cortana Rosero One <cortana@rosero.one> | ||||||
| # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | # [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 | # 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 | # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||||
|  | @ -23,36 +24,39 @@ | ||||||
| 
 | 
 | ||||||
| # Configuración inicial | # Configuración inicial | ||||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | 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_BASE="bin" | ||||||
| BIN_LIBS="lib" | BIN_LIBS="lib" | ||||||
| BIN_MESG="msg" | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # Importar bibliotecas necesarias | # Importar bibliotecas necesarias | ||||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | 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 | # 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}" "head" | ||||||
|  | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||||
| 
 | 
 | ||||||
| # Variables globales | # Variables globales | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${fgmsg_000}" | ||||||
| 
 | 
 | ||||||
| # Función para verificar si berg está instalado | # Función para verificar si berg está instalado | ||||||
| check_berg_installed() { | check_berg_installed() { | ||||||
|   if ! command -v berg &> /dev/null; then |   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 |     exit 1 | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
|  | @ -60,7 +64,7 @@ check_berg_installed() { | ||||||
| # Función para verificar si SOPS está instalado | # Función para verificar si SOPS está instalado | ||||||
| check_sops_installed() { | check_sops_installed() { | ||||||
|   if ! command -v sops &> /dev/null; then |   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 |     exit 1 | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
|  | @ -114,8 +118,8 @@ get_forgejo_url() { | ||||||
| login() { | login() { | ||||||
|   # Verificar que el archivo de token encriptado existe |   # Verificar que el archivo de token encriptado existe | ||||||
|   if [ ! -f "${DEVELOPER_DIR}/forgejo.sops.yaml" ]; then |   if [ ! -f "${DEVELOPER_DIR}/forgejo.sops.yaml" ]; then | ||||||
|     echo "Error: No se encontró el archivo de token para Forgejo." |     echo "${fgmsg_005}" | ||||||
|     echo "Por favor, ejecute bin/cversadm_token.sh para configurar el token primero." |     echo "${fgmsg_006}" | ||||||
|     exit 1 |     exit 1 | ||||||
|   fi |   fi | ||||||
|    |    | ||||||
|  | @ -126,22 +130,22 @@ login() { | ||||||
|   local forgejo_url=$(get_forgejo_url) |   local forgejo_url=$(get_forgejo_url) | ||||||
|    |    | ||||||
|   if [ -n "$forgejo_url" ]; then |   if [ -n "$forgejo_url" ]; then | ||||||
|     echo "Usando servidor Forgejo: $forgejo_url" |     echo "${fgmsg_007} $forgejo_url" | ||||||
|     export BERG_BASE_URL="$forgejo_url" |     export BERG_BASE_URL="$forgejo_url" | ||||||
|   else |   else | ||||||
|     echo "ADVERTENCIA: No se pudo detectar automáticamente la URL de Forgejo." |     echo "${fgmsg_008}" | ||||||
|     echo "Si la autenticación falla, establezca manualmente BERG_BASE_URL." |     echo "${fgmsg_009}" | ||||||
|   fi |   fi | ||||||
|     |     | ||||||
|   # Iniciar sesión con berg |   # Iniciar sesión con berg | ||||||
|   echo "Iniciando sesión en Forgejo..." |   echo "${fgmsg_010}" | ||||||
|   berg auth login -t "$token" |   berg auth login -t "$token" | ||||||
|   local login_status=$? |   local login_status=$? | ||||||
|    |    | ||||||
|   if [ $login_status -eq 0 ]; then |   if [ $login_status -eq 0 ]; then | ||||||
|     echo "Sesión iniciada correctamente en Forgejo." |     echo "${fgmsg_011}" | ||||||
|   else |   else | ||||||
|     echo "Error al iniciar sesión en Forgejo. Por favor, verifique su token." |     echo "${fgmsg_012}" | ||||||
|     exit 1 |     exit 1 | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
|  | @ -152,18 +156,18 @@ logout() { | ||||||
|   local forgejo_url=$(get_forgejo_url) |   local forgejo_url=$(get_forgejo_url) | ||||||
|    |    | ||||||
|   if [ -n "$forgejo_url" ]; then |   if [ -n "$forgejo_url" ]; then | ||||||
|     echo "Usando servidor Forgejo: $forgejo_url" |     echo "${fgmsg_007} $forgejo_url" | ||||||
|     export BERG_BASE_URL="$forgejo_url" |     export BERG_BASE_URL="$forgejo_url" | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   # Ya no se eliminan alias |   # Ya no se eliminan alias | ||||||
|    |    | ||||||
|   echo "Cerrando sesión de Forgejo..." |   echo "${fgmsg_013}" | ||||||
|   if ! berg auth status &>/dev/null; then |   if ! berg auth status &>/dev/null; then | ||||||
|     echo "No hay sesión activa en Forgejo." |     echo "${fgmsg_014}" | ||||||
|   else |   else | ||||||
|     berg auth logout -s 2>/dev/null || true |     berg auth logout -s 2>/dev/null || true | ||||||
|     echo "Sesión cerrada." |     echo "${fgmsg_015}" | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1,30 +1,77 @@ | ||||||
| #!/bin/bash | #!/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> | # [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) | # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||||
| #           | # | ||||||
| # AGPL License | # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||||
| # Modified date: 14/03/2025 | # | ||||||
| # ------------------------------------------------------------------ | # 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 | # Función para verificar si se está ejecutando como root | ||||||
| check_root() { | check_root() { | ||||||
|     if [ "$(id -u)" -ne 0 ]; then |     if [ "$(id -u)" -ne 0 ]; then | ||||||
|         echo "Este script requiere privilegios de administrador." |         echo "${ghmsg_001}" | ||||||
|         echo "Intentando escalar privilegios..." |         echo "${ghmsg_002}" | ||||||
|          |          | ||||||
|         # Verificar si sudo está disponible |         # Verificar si sudo está disponible | ||||||
|         if command -v sudo &> /dev/null; then |         if command -v sudo &> /dev/null; then | ||||||
|             echo "Usando sudo para escalar privilegios..." |             echo "${ghmsg_003}" | ||||||
|             sudo "$0" "$@" |             sudo "$0" "$@" | ||||||
|             exit $? |             exit $? | ||||||
|         elif command -v doas &> /dev/null; then |         elif command -v doas &> /dev/null; then | ||||||
|             echo "Usando doas para escalar privilegios..." |             echo "${ghmsg_004}" | ||||||
|             doas "$0" "$@" |             doas "$0" "$@" | ||||||
|             exit $? |             exit $? | ||||||
|         else |         else | ||||||
|             echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." |             echo "${ghmsg_005}" | ||||||
|  |             clear | ||||||
|             exit 1 |             exit 1 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -46,12 +93,12 @@ detect_distro() { | ||||||
|         DISTRO=$(uname -s) |         DISTRO=$(uname -s) | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     echo "Distribución detectada: $DISTRO" |     echo "${ghmsg_006} $DISTRO" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar GitHub CLI en sistemas basados en Debian/Ubuntu | # Función para instalar GitHub CLI en sistemas basados en Debian/Ubuntu | ||||||
| install_gh_debian() { | install_gh_debian() { | ||||||
|     echo "Instalando GitHub CLI en sistema basado en Debian/Ubuntu..." |     echo "${ghmsg_007}" | ||||||
|      |      | ||||||
|     # Añadir repositorio de GitHub CLI |     # Añadir repositorio de GitHub CLI | ||||||
|     type -p curl >/dev/null || apt update && apt install curl -y |     type -p curl >/dev/null || apt update && apt install curl -y | ||||||
|  | @ -62,16 +109,17 @@ install_gh_debian() { | ||||||
|     && apt install gh -y |     && apt install gh -y | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         echo "${ghmsg_008}" | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitHub CLI." |         echo "${ghmsg_009}" | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar GitHub CLI en sistemas basados en Red Hat/Fedora | # Función para instalar GitHub CLI en sistemas basados en Red Hat/Fedora | ||||||
| install_gh_redhat() { | install_gh_redhat() { | ||||||
|     echo "Instalando GitHub CLI en sistema basado en Red Hat/Fedora..." |     echo "${ghmsg_010}" | ||||||
|      |      | ||||||
|     # Añadir repositorio de GitHub CLI |     # Añadir repositorio de GitHub CLI | ||||||
|     dnf install -y dnf-plugins-core |     dnf install -y dnf-plugins-core | ||||||
|  | @ -79,51 +127,54 @@ install_gh_redhat() { | ||||||
|     dnf install -y gh |     dnf install -y gh | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         echo "${ghmsg_008}" | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitHub CLI." |         echo "${ghmsg_009}" | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar GitHub CLI en Arch Linux | # Función para instalar GitHub CLI en Arch Linux | ||||||
| install_gh_arch() { | install_gh_arch() { | ||||||
|     echo "Instalando GitHub CLI en Arch Linux..." |     echo "${ghmsg_011}" | ||||||
|      |      | ||||||
|     # Instalar GitHub CLI desde los repositorios oficiales |     # Instalar GitHub CLI desde los repositorios oficiales | ||||||
|     pacman -Sy --noconfirm gh |     pacman -Sy --noconfirm gh | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         echo "${ghmsg_008}" | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitHub CLI." |         echo "${ghmsg_009}" | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar GitHub CLI en sistemas basados en SUSE | # Función para instalar GitHub CLI en sistemas basados en SUSE | ||||||
| install_gh_suse() { | install_gh_suse() { | ||||||
|     echo "Instalando GitHub CLI en sistema basado en SUSE..." |     echo "${ghmsg_012}" | ||||||
|      |      | ||||||
|     # Añadir repositorio de GitHub CLI |     # Añadir repositorio de GitHub CLI | ||||||
|     zypper addrepo --refresh https://cli.github.com/packages/rpm/gh-cli.repo |     zypper addrepo --refresh https://cli.github.com/packages/rpm/gh-cli.repo | ||||||
|     zypper install -y gh |     zypper install -y gh | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         echo "${ghmsg_008}" | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitHub CLI." |         echo "${ghmsg_009}" | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar GitHub CLI en macOS | # Función para instalar GitHub CLI en macOS | ||||||
| install_gh_macos() { | install_gh_macos() { | ||||||
|     echo "Instalando GitHub CLI en macOS..." |     echo "${ghmsg_013}" | ||||||
|      |      | ||||||
|     # Verificar si Homebrew está instalado |     # Verificar si Homebrew está instalado | ||||||
|     if ! command -v brew &> /dev/null; then |     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)" |         /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|  | @ -131,9 +182,10 @@ install_gh_macos() { | ||||||
|     brew install gh |     brew install gh | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         echo "${ghmsg_008}" | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitHub CLI." |         echo "${ghmsg_009}" | ||||||
|  |         clear | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  | @ -141,12 +193,14 @@ install_gh_macos() { | ||||||
| # Función para verificar si gh está instalado | # Función para verificar si gh está instalado | ||||||
| check_gh() { | check_gh() { | ||||||
|     if command -v gh &> /dev/null; then |     if command -v gh &> /dev/null; then | ||||||
|         echo "GitHub CLI ya está instalado." |         # Mostrar versión actual | ||||||
|         echo "Versión actual:" |         local current_version=$(gh --version | head -n 1) | ||||||
|         gh --version |          | ||||||
|         read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL |         # Preguntar si se desea reinstalar o actualizar usando dialog | ||||||
|         if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then |         dialog_yesno "${ghmsg_015}\n${ghmsg_016}\n${current_version}\n\n${ghmsg_017}" | ||||||
|             echo "Operación cancelada." |          | ||||||
|  |         if [ $? -ne 0 ]; then | ||||||
|  |             dialog_error_box "${head_info}" "${ghmsg_018}" | ||||||
|             exit 0 |             exit 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -154,6 +208,12 @@ check_gh() { | ||||||
| 
 | 
 | ||||||
| # Función principal | # Función principal | ||||||
| main() { | main() { | ||||||
|  |     # Verificar que 'dialog' esté instalado | ||||||
|  |     if ! command -v dialog &>/dev/null; then | ||||||
|  |         echo "${head_001}" | ||||||
|  |         exit 1 | ||||||
|  |     fi | ||||||
|  |      | ||||||
|     # Verificar si ya está instalado |     # Verificar si ya está instalado | ||||||
|     check_gh |     check_gh | ||||||
|      |      | ||||||
|  | @ -183,30 +243,25 @@ main() { | ||||||
|             install_gh_macos |             install_gh_macos | ||||||
|             ;; |             ;; | ||||||
|         *) |         *) | ||||||
|             echo "Distribución no soportada: $DISTRO" |             dialog_error_box "${head_error}" "${ghmsg_019} $DISTRO\n\n${ghmsg_020}" | ||||||
|             echo "Por favor, visite https://github.com/cli/cli#installation para instrucciones de instalación manual." |  | ||||||
|             exit 1 |             exit 1 | ||||||
|             ;; |             ;; | ||||||
|     esac |     esac | ||||||
|      |      | ||||||
|     # Verificar la instalación |     # Verificar la instalación | ||||||
|     if command -v gh &> /dev/null; then |     if command -v gh &> /dev/null; then | ||||||
|         echo "GitHub CLI instalado correctamente." |         local current_version=$(gh --version | head -n 1) | ||||||
|         gh --version |  | ||||||
|          |          | ||||||
|         # Sugerir autenticación |         # Mostrar mensaje de éxito y sugerir autenticación usando dialog | ||||||
|         echo "" |         dialog_error_box "${head_success}" "${ghmsg_008}\n\n${current_version}\n\n${ghmsg_021}\ngh auth login\n\n${ghmsg_022}" | ||||||
|         echo "Para autenticarse con GitHub, ejecute:" |  | ||||||
|         echo "gh auth login" |  | ||||||
|         echo "" |  | ||||||
|         echo "Para más información, visite: https://cli.github.com/manual/" |  | ||||||
|     else |     else | ||||||
|         echo "ERROR: La instalación de GitHub CLI falló." |         dialog_error_box "${head_error}" "${ghmsg_023}" | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
|  |      | ||||||
|  |     clear | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Ejecutar función principal | # Ejecutar función principal | ||||||
| main "$@" | main "$@" | ||||||
| 
 | exit 0 | ||||||
| exit 0 |  | ||||||
|  | @ -1,30 +1,76 @@ | ||||||
| #!/bin/bash | #!/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> | # [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) | # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||||
| #           | # | ||||||
| # AGPL License | # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||||
| # Modified date: 14/03/2025 | # | ||||||
| # ------------------------------------------------------------------ | # 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 | # Función para verificar si se está ejecutando como root | ||||||
| check_root() { | check_root() { | ||||||
|     if [ "$(id -u)" -ne 0 ]; then |     if [ "$(id -u)" -ne 0 ]; then | ||||||
|         echo "Este script requiere privilegios de administrador." |         echo "${glmsg_001}" | ||||||
|         echo "Intentando escalar privilegios..." |         echo "${glmsg_002}" | ||||||
|          |          | ||||||
|         # Verificar si sudo está disponible |         # Verificar si sudo está disponible | ||||||
|         if command -v sudo &> /dev/null; then |         if command -v sudo &> /dev/null; then | ||||||
|             echo "Usando sudo para escalar privilegios..." |             echo "${glmsg_003}" | ||||||
|             sudo "$0" "$@" |             sudo "$0" "$@" | ||||||
|             exit $? |             exit $? | ||||||
|         elif command -v doas &> /dev/null; then |         elif command -v doas &> /dev/null; then | ||||||
|             echo "Usando doas para escalar privilegios..." |             echo "${glmsg_004}" | ||||||
|             doas "$0" "$@" |             doas "$0" "$@" | ||||||
|             exit $? |             exit $? | ||||||
|         else |         else | ||||||
|             echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root." |             echo "${glmsg_005}" | ||||||
|             exit 1 |             exit 1 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -46,21 +92,21 @@ detect_distro() { | ||||||
|         DISTRO=$(uname -s) |         DISTRO=$(uname -s) | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     echo "Distribución detectada: $DISTRO" |     echo "${glmsg_006} $DISTRO" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar glab mediante Homebrew en macOS y Linux | # Función para instalar glab mediante Homebrew en macOS y Linux | ||||||
| install_glab_homebrew() { | install_glab_homebrew() { | ||||||
|     echo "Instalando GitLab CLI mediante Homebrew..." |     echo "${glmsg_007}" | ||||||
|      |      | ||||||
|     # Verificar si Homebrew está instalado |     # Verificar si Homebrew está instalado | ||||||
|     if ! command -v brew &> /dev/null; then |     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)" |         /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | ||||||
|          |          | ||||||
|         # Verificar si la instalación fue exitosa |         # Verificar si la instalación fue exitosa | ||||||
|         if ! command -v brew &> /dev/null; then |         if ! command -v brew &> /dev/null; then | ||||||
|             echo "ERROR: No se pudo instalar Homebrew." |             echo "${glmsg_009}" | ||||||
|             return 1 |             return 1 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -69,17 +115,17 @@ install_glab_homebrew() { | ||||||
|     brew install gitlab-glab/tap/glab |     brew install gitlab-glab/tap/glab | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitLab CLI instalado correctamente mediante Homebrew." |         echo "${glmsg_010}" | ||||||
|         return 0 |         return 0 | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante Homebrew." |         echo "${glmsg_011}" | ||||||
|         return 1 |         return 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar glab en sistemas basados en Debian/Ubuntu | # Función para instalar glab en sistemas basados en Debian/Ubuntu | ||||||
| install_glab_debian() { | install_glab_debian() { | ||||||
|     echo "Instalando GitLab CLI en sistema basado en Debian/Ubuntu..." |     echo "${glmsg_012}" | ||||||
|      |      | ||||||
|     # Verificar si curl está instalado |     # Verificar si curl está instalado | ||||||
|     if ! command -v curl &> /dev/null; then |     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 |     # Intentar primero usando los paquetes del sistema si están disponibles | ||||||
|     if command -v apt &> /dev/null; then |     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" |         apt-cache search --names-only "^glab$" 2>/dev/null | grep -q "^glab" | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." |             echo "${glmsg_014}" | ||||||
|             apt update && apt install -y glab |             apt update && apt install -y glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." |                 echo "${glmsg_015}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|  | @ -102,81 +148,81 @@ install_glab_debian() { | ||||||
|      |      | ||||||
|     # Si no está en los repositorios, usar el script oficial |     # Si no está en los repositorios, usar el script oficial | ||||||
|     if command -v gpg &> /dev/null; then |     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 |         curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI instalado correctamente mediante script oficial." |             echo "${glmsg_017}" | ||||||
|             return 0 |             return 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Si el método anterior falla, probar con Homebrew |     # Si el método anterior falla, probar con Homebrew | ||||||
|     echo "Intentando instalar mediante Homebrew..." |     echo "${glmsg_018}" | ||||||
|     install_glab_homebrew |     install_glab_homebrew | ||||||
|     return $? |     return $? | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar glab en sistemas basados en Red Hat/Fedora | # Función para instalar glab en sistemas basados en Red Hat/Fedora | ||||||
| install_glab_redhat() { | install_glab_redhat() { | ||||||
|     echo "Instalando GitLab CLI en sistema basado en Red Hat/Fedora..." |     echo "${glmsg_019}" | ||||||
|      |      | ||||||
|     # Verificar si dnf está instalado |     # Verificar si dnf está instalado | ||||||
|     if command -v dnf &> /dev/null; then |     if command -v dnf &> /dev/null; then | ||||||
|         # Verificar si glab está disponible en los repositorios |         # 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 |         dnf list glab &>/dev/null | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." |             echo "${glmsg_014}" | ||||||
|             dnf install -y glab |             dnf install -y glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." |                 echo "${glmsg_015}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|          |          | ||||||
|         # Si no está en los repositorios, usar el script oficial |         # Si no está en los repositorios, usar el script oficial | ||||||
|         if command -v gpg &> /dev/null; then |         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 |             curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente mediante script oficial." |                 echo "${glmsg_017}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|          |          | ||||||
|         # Si el método anterior falla, probar con snap |         # Si el método anterior falla, probar con snap | ||||||
|         if command -v snap &> /dev/null; then |         if command -v snap &> /dev/null; then | ||||||
|             echo "Intentando instalar mediante snap..." |             echo "${glmsg_021}" | ||||||
|             snap install glab |             snap install glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente mediante snap." |                 echo "${glmsg_022}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|     # Si dnf no está disponible, pero yum sí |     # Si dnf no está disponible, pero yum sí | ||||||
|     elif command -v yum &> /dev/null; then |     elif command -v yum &> /dev/null; then | ||||||
|         # Verificar si glab está disponible en los repositorios |         # 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 |         yum list glab &>/dev/null | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI encontrado en los repositorios. Instalando..." |             echo "${glmsg_014}" | ||||||
|             yum install -y glab |             yum install -y glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." |                 echo "${glmsg_015}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Si los métodos anteriores fallan, probar con Homebrew |     # Si los métodos anteriores fallan, probar con Homebrew | ||||||
|     echo "Intentando instalar mediante Homebrew..." |     echo "${glmsg_018}" | ||||||
|     install_glab_homebrew |     install_glab_homebrew | ||||||
|     return $? |     return $? | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar glab en Arch Linux | # Función para instalar glab en Arch Linux | ||||||
| install_glab_arch() { | install_glab_arch() { | ||||||
|     echo "Instalando GitLab CLI en Arch Linux..." |     echo "${glmsg_023}" | ||||||
|      |      | ||||||
|     # Intentar primero usando el repositorio oficial |     # Intentar primero usando el repositorio oficial | ||||||
|     if command -v pacman &> /dev/null; then |     if command -v pacman &> /dev/null; then | ||||||
|  | @ -184,7 +230,7 @@ install_glab_arch() { | ||||||
|         if pacman -Ss glab | grep -q "^community/glab"; then |         if pacman -Ss glab | grep -q "^community/glab"; then | ||||||
|             pacman -Sy --noconfirm glab |             pacman -Sy --noconfirm glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente desde los repositorios oficiales." |                 echo "${glmsg_015}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|  | @ -193,55 +239,55 @@ install_glab_arch() { | ||||||
|         if command -v yay &> /dev/null; then |         if command -v yay &> /dev/null; then | ||||||
|             yay -S --noconfirm glab |             yay -S --noconfirm glab | ||||||
|             if [ $? -eq 0 ]; then |             if [ $? -eq 0 ]; then | ||||||
|                 echo "GitLab CLI instalado correctamente desde AUR." |                 echo "${glmsg_024}" | ||||||
|                 return 0 |                 return 0 | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Si los métodos anteriores fallan, probar con Homebrew |     # Si los métodos anteriores fallan, probar con Homebrew | ||||||
|     echo "Intentando instalar mediante Homebrew..." |     echo "${glmsg_018}" | ||||||
|     install_glab_homebrew |     install_glab_homebrew | ||||||
|     return $? |     return $? | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar glab en sistemas basados en SUSE | # Función para instalar glab en sistemas basados en SUSE | ||||||
| install_glab_suse() { | install_glab_suse() { | ||||||
|     echo "Instalando GitLab CLI en sistema basado en SUSE..." |     echo "${glmsg_025}" | ||||||
|      |      | ||||||
|     # Intentar primero usando el script oficial |     # Intentar primero usando el script oficial | ||||||
|     if command -v gpg &> /dev/null; then |     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 |         curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI instalado correctamente mediante script oficial." |             echo "${glmsg_017}" | ||||||
|             return 0 |             return 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Si el método anterior falla, probar con snap |     # Si el método anterior falla, probar con snap | ||||||
|     if command -v snap &> /dev/null; then |     if command -v snap &> /dev/null; then | ||||||
|         echo "Intentando instalar mediante snap..." |         echo "${glmsg_021}" | ||||||
|         snap install glab |         snap install glab | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             echo "GitLab CLI instalado correctamente mediante snap." |             echo "${glmsg_022}" | ||||||
|             return 0 |             return 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Si los métodos anteriores fallan, probar con Homebrew |     # Si los métodos anteriores fallan, probar con Homebrew | ||||||
|     echo "Intentando instalar mediante Homebrew..." |     echo "${glmsg_018}" | ||||||
|     install_glab_homebrew |     install_glab_homebrew | ||||||
|     return $? |     return $? | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar directamente usando Go | # Función para instalar directamente usando Go | ||||||
| install_glab_go() { | install_glab_go() { | ||||||
|     echo "Intentando instalar GitLab CLI mediante Go..." |     echo "${glmsg_026}" | ||||||
|      |      | ||||||
|     # Verificar si Go está instalado |     # Verificar si Go está instalado | ||||||
|     if ! command -v go &> /dev/null; then |     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 |         return 1 | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|  | @ -249,20 +295,20 @@ install_glab_go() { | ||||||
|     go install gitlab.com/gitlab-org/cli/cmd/glab@main |     go install gitlab.com/gitlab-org/cli/cmd/glab@main | ||||||
|      |      | ||||||
|     if [ $? -eq 0 ]; then |     if [ $? -eq 0 ]; then | ||||||
|         echo "GitLab CLI instalado correctamente mediante Go." |         echo "${glmsg_028}" | ||||||
|         echo "Asegúrese de que \$GOPATH/bin esté en su PATH." |         echo "${glmsg_029}" | ||||||
|         echo "Por ejemplo, puede agregar lo siguiente a su ~/.bashrc o ~/.zshrc:" |         echo "${glmsg_030}" | ||||||
|         echo "export PATH=\$PATH:\$HOME/go/bin" |         echo "${glmsg_031}" | ||||||
|         return 0 |         return 0 | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante Go." |         echo "${glmsg_032}" | ||||||
|         return 1 |         return 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Función para instalar usando método binario genérico | # Función para instalar usando método binario genérico | ||||||
| install_glab_binary() { | install_glab_binary() { | ||||||
|     echo "Instalando GitLab CLI usando binarios precompilados..." |     echo "${glmsg_033}" | ||||||
|      |      | ||||||
|     # Crear directorio temporal |     # Crear directorio temporal | ||||||
|     TMP_DIR=$(mktemp -d) |     TMP_DIR=$(mktemp -d) | ||||||
|  | @ -278,7 +324,7 @@ install_glab_binary() { | ||||||
|             ARCH="arm64" |             ARCH="arm64" | ||||||
|             ;; |             ;; | ||||||
|         *) |         *) | ||||||
|             echo "Arquitectura no soportada: $ARCH" |             echo "${glmsg_034} $ARCH" | ||||||
|             return 1 |             return 1 | ||||||
|             ;; |             ;; | ||||||
|     esac |     esac | ||||||
|  | @ -295,12 +341,12 @@ install_glab_binary() { | ||||||
|     # Construir URL de descarga |     # Construir URL de descarga | ||||||
|     DOWNLOAD_URL="https://github.com/profclems/glab/releases/download/${LATEST_VERSION}/glab_${LATEST_VERSION:1}_${OS}_${ARCH}.tar.gz" |     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 |     # Descargar y extraer | ||||||
|     curl -L "$DOWNLOAD_URL" -o glab.tar.gz |     curl -L "$DOWNLOAD_URL" -o glab.tar.gz | ||||||
|     if [ $? -ne 0 ]; then |     if [ $? -ne 0 ]; then | ||||||
|         echo "ERROR: No se pudo descargar GitLab CLI." |         echo "${glmsg_036}" | ||||||
|         cd - > /dev/null |         cd - > /dev/null | ||||||
|         rm -rf "$TMP_DIR" |         rm -rf "$TMP_DIR" | ||||||
|         return 1 |         return 1 | ||||||
|  | @ -308,7 +354,7 @@ install_glab_binary() { | ||||||
|      |      | ||||||
|     tar xzf glab.tar.gz |     tar xzf glab.tar.gz | ||||||
|     if [ $? -ne 0 ]; then |     if [ $? -ne 0 ]; then | ||||||
|         echo "ERROR: No se pudo extraer el archivo de GitLab CLI." |         echo "${glmsg_037}" | ||||||
|         cd - > /dev/null |         cd - > /dev/null | ||||||
|         rm -rf "$TMP_DIR" |         rm -rf "$TMP_DIR" | ||||||
|         return 1 |         return 1 | ||||||
|  | @ -324,10 +370,10 @@ install_glab_binary() { | ||||||
|      |      | ||||||
|     # Verificar instalación |     # Verificar instalación | ||||||
|     if command -v glab &> /dev/null; then |     if command -v glab &> /dev/null; then | ||||||
|         echo "GitLab CLI instalado correctamente mediante binarios precompilados." |         echo "${glmsg_038}" | ||||||
|         return 0 |         return 0 | ||||||
|     else |     else | ||||||
|         echo "ERROR: No se pudo instalar GitLab CLI mediante binarios precompilados." |         echo "${glmsg_039}" | ||||||
|         return 1 |         return 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  | @ -335,12 +381,14 @@ install_glab_binary() { | ||||||
| # Función para verificar si glab está instalado | # Función para verificar si glab está instalado | ||||||
| check_glab() { | check_glab() { | ||||||
|     if command -v glab &> /dev/null; then |     if command -v glab &> /dev/null; then | ||||||
|         echo "GitLab CLI ya está instalado." |         # Mostrar versión actual | ||||||
|         echo "Versión actual:" |         local current_version=$(glab --version | head -n 1) | ||||||
|         glab --version |          | ||||||
|         read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL |         # Preguntar si se desea reinstalar o actualizar usando dialog | ||||||
|         if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then |         dialog_yesno "${glmsg_040}\n${glmsg_041}\n${current_version}\n\n${glmsg_042}" | ||||||
|             echo "Operación cancelada." |          | ||||||
|  |         if [ $? -ne 0 ]; then | ||||||
|  |             dialog_error_box "${head_info}" "${glmsg_043}" | ||||||
|             exit 0 |             exit 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -348,6 +396,12 @@ check_glab() { | ||||||
| 
 | 
 | ||||||
| # Función principal | # Función principal | ||||||
| main() { | main() { | ||||||
|  |     # Verificar que 'dialog' esté instalado | ||||||
|  |     if ! command -v dialog &>/dev/null; then | ||||||
|  |         echo "${head_001}" | ||||||
|  |         exit 1 | ||||||
|  |     fi | ||||||
|  |      | ||||||
|     # Verificar si ya está instalado |     # Verificar si ya está instalado | ||||||
|     check_glab |     check_glab | ||||||
|      |      | ||||||
|  | @ -394,14 +448,13 @@ main() { | ||||||
|             fi |             fi | ||||||
|             ;; |             ;; | ||||||
|         *) |         *) | ||||||
|             echo "Distribución no soportada directamente: $DISTRO" |             dialog_error_box "${head_warning}" "${glmsg_044} $DISTRO\n${glmsg_045}" | ||||||
|             echo "Intentando métodos alternativos..." |  | ||||||
|             ;; |             ;; | ||||||
|     esac |     esac | ||||||
|      |      | ||||||
|     # Si no se pudo instalar con el método específico para la distribución, intentar métodos alternativos |     # Si no se pudo instalar con el método específico para la distribución, intentar métodos alternativos | ||||||
|     if [ "$install_success" = false ]; then |     if [ "$install_success" = false ]; then | ||||||
|         echo "Intentando métodos alternativos de instalación..." |         dialog_error_box "${head_info}" "${glmsg_046}" | ||||||
|          |          | ||||||
|         # Intentar instalar con Go |         # Intentar instalar con Go | ||||||
|         if command -v go &> /dev/null; then |         if command -v go &> /dev/null; then | ||||||
|  | @ -421,25 +474,19 @@ main() { | ||||||
|          |          | ||||||
|         # Si todos los métodos fallan |         # Si todos los métodos fallan | ||||||
|         if [ "$install_success" = false ]; then |         if [ "$install_success" = false ]; then | ||||||
|             echo "No se pudo instalar GitLab CLI con ninguno de los métodos disponibles." |             dialog_error_box "${head_error}" "${glmsg_047}\n\n${glmsg_048}" | ||||||
|             echo "Por favor, visite https://gitlab.com/gitlab-org/cli para instrucciones de instalación manual." |  | ||||||
|             exit 1 |             exit 1 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|     # Verificar la instalación |     # Verificar la instalación | ||||||
|     if command -v glab &> /dev/null; then |     if command -v glab &> /dev/null; then | ||||||
|         echo "GitLab CLI instalado correctamente." |         local current_version=$(glab --version | head -n 1) | ||||||
|         glab --version |  | ||||||
|          |          | ||||||
|         # Sugerir autenticación |         # Mostrar mensaje de éxito y sugerir autenticación usando dialog | ||||||
|         echo "" |         dialog_error_box "${head_success}" "${glmsg_049}\n\n${current_version}\n\n${glmsg_050}\nglab auth login\n\n${glmsg_051}" | ||||||
|         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" |  | ||||||
|     else |     else | ||||||
|         echo "ERROR: La instalación de GitLab CLI falló." |         dialog_error_box "${head_error}" "${glmsg_052}" | ||||||
|         exit 1 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  | @ -447,4 +494,7 @@ main() { | ||||||
| # Ejecutar función principal | # Ejecutar función principal | ||||||
| main "$@" | main "$@" | ||||||
| 
 | 
 | ||||||
| exit 0 | # Limpiar la pantalla al finalizar | ||||||
|  | clear | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # gpg_init.sh | # Script: gpg_init.sh | ||||||
| # Modified: 2024/12/09 10:27:00 | # Description: Script de inicialización de estructura para firma GPG | ||||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
|  | @ -43,8 +60,6 @@ load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | ||||||
| # Load gpg messages | # Load gpg messages | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "gpg" | load_messages $BIN_HOME $BIN_MESG $BIN_LANG "gpg" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ########### MAIN PROGRAM ########### | ########### MAIN PROGRAM ########### | ||||||
| 
 | 
 | ||||||
| # Set program title | # Set program title | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # helix_install.sh | # Script: helix_install.sh | ||||||
| # Modified: 2025/03/11 15:00:00 | # Description: Script para instalar Helix Editor | ||||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | # 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 | # 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 | # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||||
|  | @ -21,22 +25,32 @@ | ||||||
| # Uso: | # Uso: | ||||||
| #   ./helix_install.sh | #   ./helix_install.sh | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_MESG=bin/msg | BIN_BASE="bin" | ||||||
| BIN_LIBS=bin/lib | BIN_LIBS="lib" | ||||||
| BIN_CFGS=bin/config | BIN_MESG="msg" | ||||||
| VERSION=1.0.0 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| source $BIN_HOME/$BIN_LIBS/console.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| apps_title="${hx_001}" | apps_title="${hx_001}" | ||||||
| 
 | 
 | ||||||
|  | @ -221,6 +235,10 @@ install_helix_tarball() { | ||||||
| if [ "$EUID" -ne 0 ]; then | if [ "$EUID" -ne 0 ]; then | ||||||
|   dialog_error_box "${head_superuser}" "${hx_011}" |   dialog_error_box "${head_superuser}" "${hx_011}" | ||||||
|   dialog_input_pass "${npm_002}" "" "" |   dialog_input_pass "${npm_002}" "" "" | ||||||
|  |   if [ $? -ne 0 ]; then | ||||||
|  |     dialog_error_box "${head_error}" "${npm_003}" | ||||||
|  |     finish | ||||||
|  |   fi | ||||||
|   SUDO_PASS="$value" |   SUDO_PASS="$value" | ||||||
|    |    | ||||||
|   # Verificar que la contraseña funcione |   # Verificar que la contraseña funcione | ||||||
|  | @ -278,4 +296,4 @@ else | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Salir | # Salir | ||||||
| finish | finish | ||||||
|  |  | ||||||
							
								
								
									
										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")" | DATENOW="$(date +"%Y-%m-%d %H:%M:%S")" | ||||||
| DATEBAK="$(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 | FREEKV_SOPS_FILE=freekv-sops.devs.yaml | ||||||
| 
 | 
 | ||||||
| DOCKER_LOCAL=dockerfile.local | DOCKER_LOCAL=dockerfile.local | ||||||
|  | @ -44,8 +44,6 @@ DOCKER_BUILD=build | ||||||
| DOCKER_FILE=Dockerfile | DOCKER_FILE=Dockerfile | ||||||
| DOCKER_ENTRY=entrypoint.sh | DOCKER_ENTRY=entrypoint.sh | ||||||
| 
 | 
 | ||||||
| VERSION="$(cat < ${BIN_HOME}/${BIN_CONF}/version)" |  | ||||||
| 
 |  | ||||||
| # Verificar si el script se está ejecutando como usuario root (superusuario) | # Verificar si el script se está ejecutando como usuario root (superusuario) | ||||||
| function is_root() { | function is_root() { | ||||||
|   if [ "$(id -u)" -eq 0 ]; then |   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_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." | 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_info="INFO" | ||||||
| head_warning="ADVERTENCIA" | head_warning="ADVERTENCIA" | ||||||
| head_error="ERROR" | head_error="ERROR" | ||||||
|  | head_success="ÉXITO" | ||||||
| head_unknow="UNKNOW" | head_unknow="UNKNOW" | ||||||
| head_version="Versión" | head_version="Versión" | ||||||
| head_ubuntu="ubuntu" | 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" | git_new_project_pushed="Proyecto ha sido creado/actualizado en repositorio remoto" | ||||||
| 
 | 
 | ||||||
| npm_000="Cortana" | npm_000="Cortana" | ||||||
|  | npm_000_0="Jarvis" | ||||||
| npm_000_1="Rosero One" | 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_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_002="No eres super usuario. Ingresa la contraseña para escalamiento:" | ||||||
| npm_003="Contraseña incorrecta o error al escalar privilegios." | 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_015="Instalación completada. Versiones instaladas: Node.js: [versión] npm: [versión]" | ||||||
| npm_016="Instalador de Node.js y npm" | npm_016="Instalador de Node.js y npm" | ||||||
| npm_017="Confirmar Sistema" | npm_017="Confirmar Sistema" | ||||||
| npm_018="Instalación" | npm_018="Instalación de Anthropic Claude Code" | ||||||
| npm_019="Versiones instaladas:" | npm_019="Versiones instaladas:" | ||||||
| npm_020="No encontrado" | npm_020="No encontrado" | ||||||
| npm_021="Instalación Finalizada" | npm_021="Instalación Finalizada" | ||||||
| npm_022="npm no está instalado. Por favor instálalo e inténtalo de nuevo." | 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_024="Instalación completada satisfactoriamente." | ||||||
| npm_025="Ocurrió un error durante la instalación." | npm_025="Ocurrió un error durante la instalación." | ||||||
| npm_026="Desinstalar" | 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_028="Desinstalación Completa" | ||||||
| npm_029="Desinstalación completada exitosamente." | npm_029="Desinstalación completada exitosamente." | ||||||
| npm_030="Ocurrió un error durante la desinstalación." | npm_030="Ocurrió un error durante la desinstalación." | ||||||
| npm_031="Confirmación" | npm_031="Confirmación" | ||||||
| npm_032="¿Está seguro que desea desinstalar Anthropoc Claude Code?" | npm_032="¿Está seguro que desea desinstalar Anthropic Claude Code?" | ||||||
| npm_033="¿Desea instalar Anthropoc Claude Code?" | npm_033="¿Desea instalar Anthropic Claude Code?" | ||||||
| npm_034="Alias existente" | npm_034="Alias existente" | ||||||
| npm_035="El alias 'cortana' ya existe en" | npm_035="El alias 'cortana' ya existe en" | ||||||
| npm_036="Alias creado" | 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_058="El token de Cortana ha sido encriptado exitosamente en" | ||||||
| npm_059="Falló la encriptación del token de Cortana." | 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:" | 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_001="Instalador de Helix Editor" | ||||||
| hx_002="Este script instalará Helix Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)." | 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..." | hx_003="Descargando la última versión de Helix..." | ||||||
|  |  | ||||||
|  | @ -1,11 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # npm_install.sh | # | ||||||
| # Script interactivo para instalar Node.js y npm en múltiples sistemas operativos | # Script: npm_install.sh | ||||||
| # Soporta: Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew) | # Description: # Script interactivo para instalar Node.js y npm en múltiples sistemas operativos | ||||||
| # Requiere: dialog | # Created:  2025/03/09 10:27:00  | ||||||
| # Modified: 2025/03/09 10:27:00 | # Modified: 2025/03/19 11:57:08 | ||||||
| # Generado con inteligencia artificial | # [Author] Mauro Rosero P. <mauro@rosero.one> | ||||||
| # Derechos de Autor (C) [2024] [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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.1 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| #baselib_test |  | ||||||
| 
 | 
 | ||||||
| # Load head messages | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
| 
 | 
 | ||||||
| # Función para limpiar la pantalla y salir | # Función para limpiar la pantalla y salir | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # profile_backup.sh | # Script: profile_backup.sh | ||||||
| # Modified: 2024/12/09 10:27:00 | # Description: Script para hacer copia de seguridad del perfil del desarrollador | ||||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # LOAD BASE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||||
| #baselib_test | #baselib_test | ||||||
| 
 | 
 | ||||||
| # LOAD CONSOLE BASH LIBRARY | # LOAD CONSOLE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/console.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||||
| #consolelib_test | #consolelib_test | ||||||
| 
 | 
 | ||||||
| # LOAD SQLITE3 BASH LIBRARY | # LOAD SQLITE3 BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/sqlite.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib | ||||||
| #sqlitelib_test | #sqlitelib_test | ||||||
| 
 | 
 | ||||||
| # LOAD DEVELOPERS BASH LIBRARY | # LOAD DEVELOPERS BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/developers.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib | ||||||
| #gpglib_test | #gpglib_test | ||||||
| 
 | 
 | ||||||
| # Load head messages | # 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 gpg messages | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers" | load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers" | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| ########### MAIN PROGRAM ########### | ########### MAIN PROGRAM ########### | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # profile_restore.sh | # Script: profile_restore.sh | ||||||
| # Modified: 2024/12/15 14:27:00 | # Description: para restaurar copia de seguridad del perfil del desarrollador | ||||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| VERSION=0.98.0 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # LOAD BASE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||||
| #baselib_test | #baselib_test | ||||||
| 
 | 
 | ||||||
| # LOAD CONSOLE BASH LIBRARY | # LOAD CONSOLE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/console.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||||
| #consolelib_test | #consolelib_test | ||||||
| 
 | 
 | ||||||
| # LOAD SQLITE3 BASH LIBRARY | # LOAD SQLITE3 BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/sqlite.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib | ||||||
| #sqlitelib_test | #sqlitelib_test | ||||||
| 
 | 
 | ||||||
| # LOAD DEVELOPERS BASH LIBRARY | # LOAD DEVELOPERS BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/developers.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib | ||||||
| #gpglib_test | #gpglib_test | ||||||
| 
 | 
 | ||||||
| # Load head messages | # 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 gpg messages | ||||||
| load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers" | load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers" | ||||||
| 
 | 
 | ||||||
| # Function to display help message | # Function to display help message | ||||||
| function help() { | function help() { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,10 @@ | ||||||
| # | # | ||||||
| # Script: project_new.sh | # Script: project_new.sh | ||||||
| # Description: Crea una carpeta de proyecto con la estructura requerida | # 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>] | # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||||
| # | # | ||||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | # 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 | # 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/>. | # 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)" | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BASE_DIR="$(dirname "$SCRIPT_DIR")" | BIN_BASE="bin" | ||||||
| CONFIG_DIR="$SCRIPT_DIR/config" | BIN_LIBS="lib" | ||||||
| LIB_DIR="$SCRIPT_DIR/lib" | BIN_MESG="msg" | ||||||
| MSG_DIR="$SCRIPT_DIR/msg" | BIN_CFGS="config" | ||||||
| 
 | 
 | ||||||
| # Cargar libraries | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
| source "$LIB_DIR/base.lib" | if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||||
| source "$LIB_DIR/console.lib" |   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||||
| source "$MSG_DIR/head.es" | 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 | # Variables globales | ||||||
| title="${head_000} ${head_002}" | title="${head_000} ${head_002}" | ||||||
|  | @ -102,7 +124,7 @@ function get_projects_folder() { | ||||||
|     if [ -f "$CONFIG_DIR/projects.dat" ]; then |     if [ -f "$CONFIG_DIR/projects.dat" ]; then | ||||||
|         PROJECTS_DIR_NAME=$(head -n 1 "$CONFIG_DIR/projects.dat") |         PROJECTS_DIR_NAME=$(head -n 1 "$CONFIG_DIR/projects.dat") | ||||||
|     else |     else | ||||||
|         PROJECTS_DIR_NAME="proyectos" |         PROJECTS_DIR_NAME="projects" | ||||||
|         echo "$PROJECTS_DIR_NAME" > "$CONFIG_DIR/projects.dat" |         echo "$PROJECTS_DIR_NAME" > "$CONFIG_DIR/projects.dat" | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|  | @ -151,7 +173,8 @@ function request_project_name() { | ||||||
|         if [ $? -eq 0 ]; then |         if [ $? -eq 0 ]; then | ||||||
|             request_project_name |             request_project_name | ||||||
|         else |         else | ||||||
|             echo "${proj_007}" |             dialog_error_box "$head_error" "${proj_007}" | ||||||
|  |             clear | ||||||
|             exit 1 |             exit 1 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | @ -860,6 +883,10 @@ function main() { | ||||||
|      |      | ||||||
|     # Crear estructura del proyecto |     # Crear estructura del proyecto | ||||||
|     create_project_structure |     create_project_structure | ||||||
|  |      | ||||||
|  |     # Limpiar Consola | ||||||
|  |     clear | ||||||
|  |      | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Ejecutar función principal | # 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 | #!/bin/bash | ||||||
| # | # | ||||||
| # update.sh | # Script: update.sh | ||||||
| # Modified: 2024/12/01 15:27:00 | # Description: Script para update.sh | ||||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_MESG=bin/msg |  | ||||||
| BIN_LIBS=bin/lib |  | ||||||
| 
 | 
 | ||||||
| # CHECK SHELL LANGUAGE | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
| BIN_LANG=${LANG:0:2} | 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 | # LOAD BASE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||||
| #baselib_test | #baselib_test | ||||||
| 
 | 
 | ||||||
| load_bootstrap_msg() { | load_bootstrap_msg() { | ||||||
|  | @ -59,7 +72,7 @@ else | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Load bootstrap library for update functions | # 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) | # Update sistema operativo y repositorios primero (no requiere privilegios de root) | ||||||
| echo -e "\n${head_info}: Actualizando repositorios locales primero..." | 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." |   echo -e "Para instalar estas dependencias, ejecute bin/bootstrap.sh primero." | ||||||
| fi | 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." | echo -e "\n${head_info}: Proceso de actualización completado." | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,12 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # | # | ||||||
| # vpn_install.sh | # Script: vpn_install.sh | ||||||
| # Modified: 2024/12/01 15:27:00 | # Description: Script para vpn_install.sh | ||||||
| # Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_MESG=bin/msg | 
 | ||||||
| BIN_LIBS=bin/lib | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
| VERSION=1.0.1 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # Importar bibliotecas necesarias | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
| #baselib_test | 
 | ||||||
|  | # 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() { | function load_bootstrap_msg() { | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +82,7 @@ function install() { | ||||||
|     local UPDATE=$5 |     local UPDATE=$5 | ||||||
| 
 | 
 | ||||||
| 	# Load base bash library | 	# Load base bash library | ||||||
|         BIN_HOME=$BIN_PATH |     BIN_HOME=$BIN_PATH | ||||||
| 	source $BIN_PATH/$LIBRARY/base.lib | 	source $BIN_PATH/$LIBRARY/base.lib | ||||||
| 
 | 
 | ||||||
| 	# Load bootstrap bash library | 	# Load bootstrap bash library | ||||||
|  | @ -92,9 +112,6 @@ function install() { | ||||||
|     esac |     esac | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Load messages |  | ||||||
| load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG |  | ||||||
| 
 |  | ||||||
| # Check for arguments option | # Check for arguments option | ||||||
| help=false | help=false | ||||||
| version=false | version=false | ||||||
|  | @ -131,7 +148,8 @@ if $version; then | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Display Headers | # Display Headers | ||||||
| display_devstools_header "- $title" | display_devstools_header "PRITUNL VPN" | ||||||
| 
 | 
 | ||||||
| # Run install with sudo | # 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 | #!/bin/bash | ||||||
| # | # | ||||||
| # vpn_users.sh | # Script: vpn_users.sh | ||||||
| # Modified: 2024/12/01 15:27:00 | # Description: Script para vpn_users.sh | ||||||
| # Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)] | # 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 | # 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 | # 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 | # 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/>. | # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| DEVSPATH=devs | # Configuración inicial | ||||||
| BIN_HOME=$HOME/$DEVSPATH | # Usar DEVELOPER_DIR de base.lib | ||||||
| BIN_MESG=bin/msg | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
| BIN_LIBS=bin/lib | BIN_BASE="bin" | ||||||
| BIN_CFGS=bin/config | BIN_LIBS="lib" | ||||||
| VERSION=1.0.1 | 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 | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
| 
 | 
 | ||||||
| # LOAD BASE BASH LIBRARY | # LOAD BASE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/base.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib | ||||||
| #baselib_test | #baselib_test | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # LOAD CONSOLE BASH LIBRARY | # LOAD CONSOLE BASH LIBRARY | ||||||
| source $BIN_HOME/$BIN_LIBS/console.lib | source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib | ||||||
| #consolelib_test | #consolelib_test | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Load head messages | # 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 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 to display help message | ||||||
| function help() { | function help() { | ||||||
|  | @ -61,7 +76,7 @@ function vpn_pritunl_users_form() { | ||||||
| 
 | 
 | ||||||
|   declare -a ARRAY |   declare -a ARRAY | ||||||
|   c_val[0]=013 |   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 |   if [ $? -ne 0 ]; then | ||||||
|     ARRAY[0]="" |     ARRAY[0]="" | ||||||
|     c_val[0]=0 |     c_val[0]=0 | ||||||
|  | @ -104,10 +119,10 @@ function vpn_pritunl_users_form() { | ||||||
|     display_devstools_header "${plmsg_000}" |     display_devstools_header "${plmsg_000}" | ||||||
|     if [ "${action}" != "remove" ] |     if [ "${action}" != "remove" ] | ||||||
|     then |     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]}" |         -e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]} input_pritunl_email=${response[2]}" | ||||||
|     else |     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]}" |         -e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]}" | ||||||
|     fi |     fi | ||||||
|     read -p "${head_pause}" |     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