[IMPROVED] Estandarizar y mejorar scripts con estructura unificada
- Actualizar scripts con estructura de cabecera estandarizada - Renombrar cortana_install.sh a claude_install.sh - Agregar cortana_unalias.sh para facilitar la gestión de alias - Mejorar manejo de rutas usando SCRIPT_DIR para determinar ubicaciones - Usar variables de configuración consistentes en todos los scripts - Implementar carga de mensajes estandarizada en todos los scripts - Agregar limpieza de consola al finalizar la mayoría de scripts - Eliminar scripts obsoletos y redundantes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f6f2ebcaa0
commit
f4568ef57d
28 changed files with 774 additions and 1683 deletions
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# bootstrap.sh
|
||||
# Script: bootstrap.sh
|
||||
# Description: Script para bootstrap.sh
|
||||
# Created: 2025/03/19 11:57:08
|
||||
# Modified: 2025/03/15 16:30:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,17 +21,34 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
# Configuración inicial
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
|
||||
# Variables globales
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
load_bootstrap_msg() {
|
||||
|
||||
|
@ -188,12 +209,3 @@ display_devstools_header "- $bomsg_000"
|
|||
|
||||
# Run install with sudo (sin parámetros específicos)
|
||||
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG"
|
||||
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
|
||||
#
|
||||
# cortana_install.sh
|
||||
# Modified: 2024/12/01 15:27:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# Script: claude_install.sh
|
||||
# Description: Script para instalar o desinstalar Anthropoc Claude Code con npm
|
||||
# Created: 2024/12/01 15:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -19,28 +23,37 @@
|
|||
|
||||
# Script para instalar o desinstalar Anthropoc Claude Code con npm
|
||||
# Uso:
|
||||
# ./script.sh -> Instalación
|
||||
# ./script.sh -u -> Desinstalación
|
||||
# ./claude_install.sh -> Instalación
|
||||
# ./claude_install -u -> Desinstalación
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
|
||||
# Verificar que 'dialog' esté instalado
|
||||
if ! command -v dialog &>/dev/null; then
|
||||
echo "${npm_001}"
|
||||
|
@ -50,10 +63,10 @@ fi
|
|||
# Verificar que 'npm' esté instalado
|
||||
if ! command -v npm &>/dev/null; then
|
||||
dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_022}" 7 50
|
||||
exit 1
|
||||
${BIN_HOME}/${BIN_BASE}/npm_install.sh
|
||||
fi
|
||||
|
||||
# Función para preparar pre-requisitos para instalación de Cortana
|
||||
# Función para preparar pre-requisitos para instalación de Claude Code
|
||||
pre_anthropic() {
|
||||
# First, save a list of your existing global packages for later migration
|
||||
npm list -g --depth=0 > ~/npm-global-packages.txt
|
||||
|
@ -95,7 +108,7 @@ pre_anthropic() {
|
|||
|
||||
# Función para instalar Anthropoc Claude Code
|
||||
install_anthropic() {
|
||||
dialog --backtitle "${title}" --title "${npm_018} ${npm_000} ${npm_000_1}" --msgbox "${npm_023}" 7 60
|
||||
dialog --backtitle "${title}" --title "${npm_018}" --msgbox "${npm_023}" 7 60
|
||||
# Ejecutar la instalación
|
||||
pre_anthropic
|
||||
npm install -g @anthropic-ai/claude-code
|
||||
|
@ -109,7 +122,7 @@ install_anthropic() {
|
|||
|
||||
# Función para desinstalar Anthropoc Claude Code
|
||||
uninstall_anthropic() {
|
||||
dialog --backtitle "${title}" --title "${npm_026} ${npm_000} ${npm_000_1}" --msgbox "${npm_027}" 7 60
|
||||
dialog --backtitle "${title}" --title "${npm_026}" --msgbox "${npm_027}" 7 60
|
||||
# Ejecutar la desinstalación
|
||||
npm uninstall -g @anthropic-ai/claude-code
|
||||
if [[ $? -eq 0 ]]; then
|
||||
|
@ -127,6 +140,7 @@ if [[ "$1" == "-u" ]]; then
|
|||
uninstall_anthropic
|
||||
else
|
||||
dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
|
@ -135,7 +149,11 @@ else
|
|||
install_anthropic
|
||||
else
|
||||
dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Limpiar consola
|
||||
clear
|
||||
|
|
@ -1,20 +1,4 @@
|
|||
#!/bin/bash
|
||||
# Source de head.es para cargar los mensajes
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# Intentar cargar mensajes (si es posible)
|
||||
if [ -f "$BIN_HOME/$BIN_LIBS/base.lib" ] && [ -f "$BIN_HOME/$BIN_MESG/head.$BIN_LANG" ]; then
|
||||
source "$BIN_HOME/$BIN_LIBS/base.lib"
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
USE_MESSAGES=true
|
||||
else
|
||||
USE_MESSAGES=false
|
||||
fi
|
||||
|
||||
# Verificar si ~/.npm-global/bin está en el PATH
|
||||
if [[ ":$PATH:" != *":$HOME/.npm-global/bin:"* ]]; then
|
||||
# Si no está en el PATH, usamos la ruta completa en el alias
|
||||
|
@ -23,10 +7,4 @@ else
|
|||
# Si está en el PATH, podemos usar el nombre directamente
|
||||
alias cortana="claude"
|
||||
fi
|
||||
|
||||
# Mostrar el mensaje usando variables si están disponibles
|
||||
if [ "$USE_MESSAGES" = true ]; then
|
||||
echo "${npm_046}"
|
||||
else
|
||||
echo "Alias cortana activado en la sesión actual."
|
||||
fi
|
||||
echo "Alias cortana activado en la sesión actual."
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# cortana_disable.sh
|
||||
# Script: cortana_disable.sh
|
||||
# Description: # Script para desactivar el alias 'cortana' para Claude Code
|
||||
# Created: 2025/03/19 11:57:08
|
||||
# Modified: 2025/03/11 12:00:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -20,22 +22,34 @@
|
|||
# Script para desactivar el alias 'cortana' para Claude Code
|
||||
# Uso:
|
||||
# ./cortana_disable.sh
|
||||
# Nota: no usa console.lib, ni console.es
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Verificar que 'dialog' esté instalado
|
||||
|
@ -62,4 +76,7 @@ if [[ $? -eq 0 ]]; then
|
|||
else
|
||||
dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Limpiar consola
|
||||
clear
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# cortana_enable.sh
|
||||
# Script: cortana_enable.sh
|
||||
# Description: # Script para activar el alias 'cortana' para Claude Code
|
||||
# Created: 2025/03/19 11:57:08
|
||||
# Modified: 2025/03/11 12:00:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,30 +19,43 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Script para activar el alias 'cortana' para Claude Code
|
||||
# Script para desactivar el alias 'cortana' para Claude Code
|
||||
# Uso:
|
||||
# ./cortana_enable.sh
|
||||
# Nota: no usa console.lib, ni console.es
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Verificar que 'dialog' esté instalado
|
||||
if ! command -v dialog &>/dev/null; then
|
||||
echo "${npm_001}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -68,5 +83,11 @@ if [[ $? -eq 0 ]]; then
|
|||
dialog --backtitle "${title}" --title "${npm_036}" --msgbox "${npm_037}\n\n${npm_047}\n\nsource $ALIAS_FILE\n\n" 10 70
|
||||
else
|
||||
dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Limpiar consola
|
||||
clear
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# cortana_token.sh
|
||||
# Modified: 2025-03-12 20:26:07
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# Script: cortana_token.sh
|
||||
# Description: Script para encriptar el token de Claude Code usando SOPS
|
||||
# Created: 2025/03/12 20:26:07
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,23 +21,35 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Script para encriptar el token de Cortana (Claude Code) usando SOPS
|
||||
# Script para encriptar el token de Cortana (Claude Code) para Cortana usando SOPS
|
||||
# Cortana Token se utiliza para la agente Cortana que es la asistente para los desarrolladores
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
check_dependencies() {
|
||||
|
@ -149,10 +165,11 @@ main() {
|
|||
dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} ${HOME}/.cortana/cortana.sops.yaml" 7 70
|
||||
else
|
||||
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute main function
|
||||
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,250 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Script: cversadm_token.sh
|
||||
# Description: Administrador de tokens para plataformas de control de versiones
|
||||
# Modified: 2025/03/15
|
||||
# [Author] Cortana Rosero One <cortana@rosero.one>
|
||||
# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||
# o (a su elección) cualquier versión posterior.
|
||||
#
|
||||
# Este programa se distribuye con la esperanza de que sea útil,
|
||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||
#
|
||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
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"
|
||||
|
||||
# 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
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# 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="${cvmsg_000}"
|
||||
|
||||
# Función para verificar si SOPS está instalado
|
||||
check_sops_installed() {
|
||||
if ! command -v sops &> /dev/null; then
|
||||
# Mostrar el error usando dialog con mensaje desde developers.es
|
||||
dialog_error_box "${head_error}" "${cvmsg_013}. ${cvmsg_014}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para asegurar que el directorio .developer existe
|
||||
ensure_developers_dir() {
|
||||
if [ ! -d "$DEVELOPER_DIR" ]; then
|
||||
mkdir -p "$DEVELOPER_DIR"
|
||||
chmod 700 "$DEVELOPER_DIR"
|
||||
echo "${cvmsg_008} $DEVELOPER_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para seleccionar la plataforma de control de versiones usando menu_actions
|
||||
select_platform() {
|
||||
# Preparar opciones para menu_actions
|
||||
local menu_options="1:${cvmsg_010}
|
||||
2:${cvmsg_011}
|
||||
3:${cvmsg_012}
|
||||
|
||||
|
||||
|
||||
"
|
||||
|
||||
# Usar menu_actions en lugar de dialog_input_menu
|
||||
local selection=$(menu_actions "${cvmsg_002}" "$menu_options" 9)
|
||||
|
||||
# Verificar si hubo cancelación o error
|
||||
if [ "$selection" = "${head_key_end}" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Interpretar la selección
|
||||
case $selection in
|
||||
1) echo "github" ;;
|
||||
2) echo "gitlab" ;;
|
||||
3) echo "forgejo" ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Función para solicitar y validar el token
|
||||
request_token() {
|
||||
local platform=$1
|
||||
local platform_name=""
|
||||
local token=""
|
||||
|
||||
case $platform in
|
||||
"github") platform_name="${cvmsg_010}" ;;
|
||||
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||
esac
|
||||
|
||||
# Bucle para validación de token usando dialog directamente
|
||||
while true; do
|
||||
# Usar dialog directamente en lugar de dialog_input_pass
|
||||
token=$(dialog --backtitle "$title" --stdout --title "${cvmsg_003}" \
|
||||
--passwordbox "${cvmsg_004} $platform_name\n${cvmsg_005}" 8 60)
|
||||
|
||||
# Verificar si el usuario canceló
|
||||
if [ $? -ne 0 ]; then
|
||||
clear
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Validar token
|
||||
if [ -z "$token" ]; then
|
||||
dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_015}" 7 60
|
||||
continue
|
||||
fi
|
||||
|
||||
# Verificar longitud (debería tener al menos 30 caracteres)
|
||||
if [ ${#token} -lt 30 ]; then
|
||||
dialog --backtitle "$title" --title "${head_error}" --msgbox "${cvmsg_016}" 7 60
|
||||
continue
|
||||
fi
|
||||
|
||||
# Verificar formato (debería contener caracteres alfanuméricos y algunos especiales)
|
||||
if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then
|
||||
dialog --backtitle "$title" --title "${head_warning}" --msgbox "${cvmsg_017}" 7 60
|
||||
fi
|
||||
|
||||
# Token válido
|
||||
break
|
||||
done
|
||||
|
||||
echo "$token"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Función para guardar el token encriptado con SOPS
|
||||
save_token() {
|
||||
local platform=$1
|
||||
local token=$2
|
||||
local filename="${DEVELOPER_DIR}/${platform}.sops.yaml"
|
||||
local token_file="/tmp/vcs_token_$$"
|
||||
|
||||
# Convertir token a base64 para mayor seguridad
|
||||
local token_base64=$(echo -n "$token" | base64)
|
||||
|
||||
# Crear archivo temporal con el token en base64
|
||||
echo "token: $token_base64" > "$token_file"
|
||||
|
||||
# Encriptar el archivo con SOPS
|
||||
sops --encrypt "$token_file" > "$filename"
|
||||
local result=$?
|
||||
|
||||
# Eliminar archivo temporal
|
||||
rm -f "$token_file"
|
||||
|
||||
# Establecer permisos adecuados (solo lectura para el propietario)
|
||||
if [ $result -eq 0 ]; then
|
||||
chmod 600 "$filename"
|
||||
fi
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
# Verificar si dialog está instalado
|
||||
check_dialog_installed() {
|
||||
if ! command -v dialog &> /dev/null; then
|
||||
echo "${head_001}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
# Verificar requisitos
|
||||
check_dialog_installed
|
||||
check_sops_installed
|
||||
ensure_developers_dir
|
||||
|
||||
# Asegurar que head_000 y head_002 estén definidos para el título
|
||||
if [ -z "$head_000" ] || [ -z "$head_002" ]; then
|
||||
head_000="MRDevs"
|
||||
head_002="Tools"
|
||||
fi
|
||||
|
||||
# Mostrar título inicial
|
||||
display_text_header
|
||||
|
||||
# Seleccionar plataforma
|
||||
platform=$(select_platform)
|
||||
if [ $? -ne 0 ]; then
|
||||
clear
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Solicitar token
|
||||
token=$(request_token "$platform")
|
||||
if [ $? -ne 0 ]; then
|
||||
clear
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Guardar token
|
||||
save_token "$platform" "$token"
|
||||
if [ $? -eq 0 ]; then
|
||||
local platform_name=""
|
||||
case $platform in
|
||||
"github") platform_name="${cvmsg_010}" ;;
|
||||
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||
esac
|
||||
|
||||
dialog_error_box "${cvmsg_009}" "${cvmsg_006} $platform_name"
|
||||
else
|
||||
local platform_name=""
|
||||
case $platform in
|
||||
"github") platform_name="${cvmsg_010}" ;;
|
||||
"gitlab") platform_name="${cvmsg_011}" ;;
|
||||
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||
esac
|
||||
|
||||
dialog_error_box "${head_error}" "${cvmsg_007} $platform_name"
|
||||
fi
|
||||
|
||||
clear
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main
|
|
@ -77,7 +77,7 @@ ensure_developers_dir() {
|
|||
# Función para seleccionar la plataforma de control de versiones usando menu_actions
|
||||
select_platform() {
|
||||
# Preparar opciones para menu_actions
|
||||
local menu_options="1:${cvmsg_010} 2:${cvmsg_011} 3:${cvmsg_012}"
|
||||
local menu_options="1:${cvmsg_010}\n2:${cvmsg_011}\n3:${cvmsg_012}"
|
||||
|
||||
# Usar menu_actions en lugar de dialog_input_menu
|
||||
local selection=$(menu_actions "${cvmsg_002}" "$menu_options" 9)
|
||||
|
@ -191,17 +191,7 @@ main() {
|
|||
check_dialog_installed
|
||||
check_sops_installed
|
||||
ensure_developers_dir
|
||||
|
||||
# Asegurar que head_000 y head_002 estén definidos para el título
|
||||
if [ -z "$head_000" ] || [ -z "$head_002" ]; then
|
||||
head_000="MRDevs"
|
||||
head_002="Tools"
|
||||
fi
|
||||
|
||||
# Mostrar título inicial usando funciones de console.lib
|
||||
# Reemplazamos display_text_header por un diálogo de inicio
|
||||
dialog_error_box "$title" "$apps_title - ${head_version} $VERSION"
|
||||
|
||||
|
||||
# Seleccionar plataforma
|
||||
platform=$(select_platform)
|
||||
if [ $? -ne 0 ]; then
|
||||
|
|
185
bin/fj_login.sh
185
bin/fj_login.sh
|
@ -1,185 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Script: fj_login.sh
|
||||
# Description: Script para autenticación con Forgejo usando tokens encriptados
|
||||
# Modified: 2025/03/15
|
||||
# [Author] Cortana Rosero One <cortana@rosero.one>
|
||||
# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||
# o (a su elección) cualquier versión posterior.
|
||||
#
|
||||
# Este programa se distribuye con la esperanza de que sea útil,
|
||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||
#
|
||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Configuración inicial
|
||||
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"
|
||||
|
||||
# Variables globales
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Función para verificar si berg está instalado
|
||||
check_berg_installed() {
|
||||
if ! command -v berg &> /dev/null; then
|
||||
echo "Error: berg (Forgejo CLI) no está instalado. Por favor, ejecute bin/fjcli_install.sh primero."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para verificar si SOPS está instalado
|
||||
check_sops_installed() {
|
||||
if ! command -v sops &> /dev/null; then
|
||||
echo "Error: SOPS no está instalado. Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para extraer la URL base de Forgejo de la configuración de git
|
||||
get_forgejo_url() {
|
||||
# Intentar obtener URL desde la configuración global de git
|
||||
local remote_url=$(git config --get remote.origin.url 2>/dev/null)
|
||||
|
||||
# Si no se encuentra en la configuración global, intentar buscar en el directorio actual
|
||||
if [ -z "$remote_url" ] && [ -d ".git" ]; then
|
||||
remote_url=$(git config --get remote.origin.url 2>/dev/null)
|
||||
fi
|
||||
|
||||
# Si aún no tenemos URL, intentar buscar en algún repositorio de $HOME
|
||||
if [ -z "$remote_url" ]; then
|
||||
# Buscar repositorios en $HOME que podrían tener remotes de Forgejo
|
||||
for repo_dir in $(find $HOME -name ".git" -type d -maxdepth 3 2>/dev/null); do
|
||||
local repo_path=$(dirname "$repo_dir")
|
||||
cd "$repo_path"
|
||||
local url=$(git config --get remote.origin.url 2>/dev/null)
|
||||
if [[ "$url" == *"forgejo"* ]] || [[ "$url" == *"codeberg"* ]] || [[ "$url" == *"gitt.rosero"* ]]; then
|
||||
remote_url="$url"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Si encontramos una URL, extraer el dominio base
|
||||
if [ -n "$remote_url" ]; then
|
||||
# Eliminar protocolo (http:// o https://)
|
||||
local base_url=$(echo "$remote_url" | sed -E 's|^(https?://)?([^/]+).*|\2|')
|
||||
|
||||
# Si el formato es usuario@dominio, extraer solo el dominio
|
||||
if [[ "$base_url" == *"@"* ]]; then
|
||||
base_url=$(echo "$base_url" | cut -d '@' -f2)
|
||||
fi
|
||||
|
||||
# Devolver solo el dominio sin protocolo
|
||||
echo "$base_url"
|
||||
else
|
||||
# Si no se encontró ninguna URL, devolver una cadena vacía
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Estas funciones han sido eliminadas, ya no se crean ni eliminan alias
|
||||
# Los usuarios pueden crear su propio alias manualmente si lo desean
|
||||
|
||||
# Función para iniciar sesión con token
|
||||
login() {
|
||||
# Verificar que el archivo de token encriptado existe
|
||||
if [ ! -f "${DEVELOPER_DIR}/forgejo.sops.yaml" ]; then
|
||||
echo "Error: No se encontró el archivo de token para Forgejo."
|
||||
echo "Por favor, ejecute bin/cversadm_token.sh para configurar el token primero."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Decodificar el token de base64
|
||||
local token=$(sops -d ${DEVELOPER_DIR}/forgejo.sops.yaml | grep -oP '(?<=token: ).*' | base64 -d)
|
||||
|
||||
# Obtener la URL base de Forgejo
|
||||
local forgejo_url=$(get_forgejo_url)
|
||||
|
||||
if [ -n "$forgejo_url" ]; then
|
||||
echo "Usando servidor Forgejo: $forgejo_url"
|
||||
export BERG_BASE_URL="$forgejo_url"
|
||||
else
|
||||
echo "ADVERTENCIA: No se pudo detectar automáticamente la URL de Forgejo."
|
||||
echo "Si la autenticación falla, establezca manualmente BERG_BASE_URL."
|
||||
fi
|
||||
|
||||
# Iniciar sesión con berg
|
||||
echo "Iniciando sesión en Forgejo..."
|
||||
berg auth login -t "$token"
|
||||
local login_status=$?
|
||||
|
||||
if [ $login_status -eq 0 ]; then
|
||||
echo "Sesión iniciada correctamente en Forgejo."
|
||||
else
|
||||
echo "Error al iniciar sesión en Forgejo. Por favor, verifique su token."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para cerrar sesión
|
||||
logout() {
|
||||
# Obtener la URL base de Forgejo
|
||||
local forgejo_url=$(get_forgejo_url)
|
||||
|
||||
if [ -n "$forgejo_url" ]; then
|
||||
echo "Usando servidor Forgejo: $forgejo_url"
|
||||
export BERG_BASE_URL="$forgejo_url"
|
||||
fi
|
||||
|
||||
# Ya no se eliminan alias
|
||||
|
||||
echo "Cerrando sesión de Forgejo..."
|
||||
if ! berg auth status &>/dev/null; then
|
||||
echo "No hay sesión activa en Forgejo."
|
||||
else
|
||||
berg auth logout -s 2>/dev/null || true
|
||||
echo "Sesión cerrada."
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
# Verificar requisitos
|
||||
check_berg_installed
|
||||
check_sops_installed
|
||||
|
||||
# Verificar parámetros
|
||||
if [ "$1" = "--logout" ]; then
|
||||
logout
|
||||
else
|
||||
login
|
||||
fi
|
||||
}
|
||||
|
||||
# Ejecutar función principal con los parámetros recibidos
|
||||
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
|
|
@ -71,6 +71,7 @@ check_root() {
|
|||
exit $?
|
||||
else
|
||||
echo "${ghmsg_005}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -111,6 +112,7 @@ install_gh_debian() {
|
|||
echo "${ghmsg_008}"
|
||||
else
|
||||
echo "${ghmsg_009}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -128,6 +130,7 @@ install_gh_redhat() {
|
|||
echo "${ghmsg_008}"
|
||||
else
|
||||
echo "${ghmsg_009}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -143,6 +146,7 @@ install_gh_arch() {
|
|||
echo "${ghmsg_008}"
|
||||
else
|
||||
echo "${ghmsg_009}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -159,6 +163,7 @@ install_gh_suse() {
|
|||
echo "${ghmsg_008}"
|
||||
else
|
||||
echo "${ghmsg_009}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -180,6 +185,7 @@ install_gh_macos() {
|
|||
echo "${ghmsg_008}"
|
||||
else
|
||||
echo "${ghmsg_009}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -252,12 +258,10 @@ main() {
|
|||
dialog_error_box "${head_error}" "${ghmsg_023}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clear
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main "$@"
|
||||
|
||||
# Limpiar la pantalla al finalizar
|
||||
clear
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,212 +0,0 @@
|
|||
#!/bin/bash
|
||||
# ------------------------------------------------------------------
|
||||
# [Author] Cortana Rosero One <cortana@rosero.one>
|
||||
# [Title] ghcli_install.sh - Instalador de GitHub CLI
|
||||
# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||
#
|
||||
# AGPL License
|
||||
# Modified date: 14/03/2025
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
# Función para verificar si se está ejecutando como root
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "Este script requiere privilegios de administrador."
|
||||
echo "Intentando escalar privilegios..."
|
||||
|
||||
# Verificar si sudo está disponible
|
||||
if command -v sudo &> /dev/null; then
|
||||
echo "Usando sudo para escalar privilegios..."
|
||||
sudo "$0" "$@"
|
||||
exit $?
|
||||
elif command -v doas &> /dev/null; then
|
||||
echo "Usando doas para escalar privilegios..."
|
||||
doas "$0" "$@"
|
||||
exit $?
|
||||
else
|
||||
echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para detectar la distribución
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
DISTRO=$ID
|
||||
elif type lsb_release >/dev/null 2>&1; then
|
||||
DISTRO=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
DISTRO=$DISTRIB_ID
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
DISTRO="debian"
|
||||
else
|
||||
DISTRO=$(uname -s)
|
||||
fi
|
||||
|
||||
echo "Distribución detectada: $DISTRO"
|
||||
}
|
||||
|
||||
# Función para instalar GitHub CLI en sistemas basados en Debian/Ubuntu
|
||||
install_gh_debian() {
|
||||
echo "Instalando GitHub CLI en sistema basado en Debian/Ubuntu..."
|
||||
|
||||
# Añadir repositorio de GitHub CLI
|
||||
type -p curl >/dev/null || apt update && apt install curl -y
|
||||
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
|
||||
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
|
||||
&& apt update \
|
||||
&& apt install gh -y
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitHub CLI."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar GitHub CLI en sistemas basados en Red Hat/Fedora
|
||||
install_gh_redhat() {
|
||||
echo "Instalando GitHub CLI en sistema basado en Red Hat/Fedora..."
|
||||
|
||||
# Añadir repositorio de GitHub CLI
|
||||
dnf install -y dnf-plugins-core
|
||||
dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
|
||||
dnf install -y gh
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitHub CLI."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar GitHub CLI en Arch Linux
|
||||
install_gh_arch() {
|
||||
echo "Instalando GitHub CLI en Arch Linux..."
|
||||
|
||||
# Instalar GitHub CLI desde los repositorios oficiales
|
||||
pacman -Sy --noconfirm gh
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitHub CLI."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar GitHub CLI en sistemas basados en SUSE
|
||||
install_gh_suse() {
|
||||
echo "Instalando GitHub CLI en sistema basado en SUSE..."
|
||||
|
||||
# Añadir repositorio de GitHub CLI
|
||||
zypper addrepo --refresh https://cli.github.com/packages/rpm/gh-cli.repo
|
||||
zypper install -y gh
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitHub CLI."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar GitHub CLI en macOS
|
||||
install_gh_macos() {
|
||||
echo "Instalando GitHub CLI en macOS..."
|
||||
|
||||
# Verificar si Homebrew está instalado
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "Homebrew no está instalado. Instalando Homebrew..."
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
|
||||
# Instalar GitHub CLI
|
||||
brew install gh
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitHub CLI."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para verificar si gh está instalado
|
||||
check_gh() {
|
||||
if command -v gh &> /dev/null; then
|
||||
echo "GitHub CLI ya está instalado."
|
||||
echo "Versión actual:"
|
||||
gh --version
|
||||
read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL
|
||||
if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then
|
||||
echo "Operación cancelada."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
# Verificar si ya está instalado
|
||||
check_gh
|
||||
|
||||
# Verificar privilegios de root (excepto en macOS)
|
||||
if [ "$(uname -s)" != "Darwin" ]; then
|
||||
check_root "$@"
|
||||
fi
|
||||
|
||||
# Detectar la distribución
|
||||
detect_distro
|
||||
|
||||
# Instalar según la distribución
|
||||
case $DISTRO in
|
||||
ubuntu|debian|linuxmint|pop|elementary)
|
||||
install_gh_debian
|
||||
;;
|
||||
fedora|rhel|centos|rocky|almalinux)
|
||||
install_gh_redhat
|
||||
;;
|
||||
arch|manjaro|endeavouros)
|
||||
install_gh_arch
|
||||
;;
|
||||
opensuse*|suse|sles)
|
||||
install_gh_suse
|
||||
;;
|
||||
darwin)
|
||||
install_gh_macos
|
||||
;;
|
||||
*)
|
||||
echo "Distribución no soportada: $DISTRO"
|
||||
echo "Por favor, visite https://github.com/cli/cli#installation para instrucciones de instalación manual."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Verificar la instalación
|
||||
if command -v gh &> /dev/null; then
|
||||
echo "GitHub CLI instalado correctamente."
|
||||
gh --version
|
||||
|
||||
# Sugerir autenticación
|
||||
echo ""
|
||||
echo "Para autenticarse con GitHub, ejecute:"
|
||||
echo "gh auth login"
|
||||
echo ""
|
||||
echo "Para más información, visite: https://cli.github.com/manual/"
|
||||
else
|
||||
echo "ERROR: La instalación de GitHub CLI falló."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main "$@"
|
||||
|
||||
exit 0
|
|
@ -1,450 +0,0 @@
|
|||
#!/bin/bash
|
||||
# ------------------------------------------------------------------
|
||||
# [Author] Cortana Rosero One <cortana@rosero.one>
|
||||
# [Title] glcli_install.sh - Instalador de GitLab CLI
|
||||
# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||
#
|
||||
# AGPL License
|
||||
# Modified date: 14/03/2025
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
# Función para verificar si se está ejecutando como root
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "Este script requiere privilegios de administrador."
|
||||
echo "Intentando escalar privilegios..."
|
||||
|
||||
# Verificar si sudo está disponible
|
||||
if command -v sudo &> /dev/null; then
|
||||
echo "Usando sudo para escalar privilegios..."
|
||||
sudo "$0" "$@"
|
||||
exit $?
|
||||
elif command -v doas &> /dev/null; then
|
||||
echo "Usando doas para escalar privilegios..."
|
||||
doas "$0" "$@"
|
||||
exit $?
|
||||
else
|
||||
echo "ERROR: No se encontró sudo ni doas. Por favor ejecute este script como root."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para detectar la distribución
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
DISTRO=$ID
|
||||
elif type lsb_release >/dev/null 2>&1; then
|
||||
DISTRO=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
DISTRO=$DISTRIB_ID
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
DISTRO="debian"
|
||||
else
|
||||
DISTRO=$(uname -s)
|
||||
fi
|
||||
|
||||
echo "Distribución detectada: $DISTRO"
|
||||
}
|
||||
|
||||
# Función para instalar glab mediante Homebrew en macOS y Linux
|
||||
install_glab_homebrew() {
|
||||
echo "Instalando GitLab CLI mediante Homebrew..."
|
||||
|
||||
# Verificar si Homebrew está instalado
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "Homebrew no está instalado. Instalando Homebrew..."
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
|
||||
# Verificar si la instalación fue exitosa
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "ERROR: No se pudo instalar Homebrew."
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Instalar GitLab CLI
|
||||
brew install gitlab-glab/tap/glab
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante Homebrew."
|
||||
return 0
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitLab CLI mediante Homebrew."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar glab en sistemas basados en Debian/Ubuntu
|
||||
install_glab_debian() {
|
||||
echo "Instalando GitLab CLI en sistema basado en Debian/Ubuntu..."
|
||||
|
||||
# Verificar si curl está instalado
|
||||
if ! command -v curl &> /dev/null; then
|
||||
apt update && apt install -y curl
|
||||
fi
|
||||
|
||||
# Intentar primero usando los paquetes del sistema si están disponibles
|
||||
if command -v apt &> /dev/null; then
|
||||
echo "Verificando si glab está disponible en los repositorios..."
|
||||
apt-cache search --names-only "^glab$" 2>/dev/null | grep -q "^glab"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI encontrado en los repositorios. Instalando..."
|
||||
apt update && apt install -y glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente desde los repositorios oficiales."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si no está en los repositorios, usar el script oficial
|
||||
if command -v gpg &> /dev/null; then
|
||||
echo "Agregando repositorio oficial de GitLab..."
|
||||
curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante script oficial."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si el método anterior falla, probar con Homebrew
|
||||
echo "Intentando instalar mediante Homebrew..."
|
||||
install_glab_homebrew
|
||||
return $?
|
||||
}
|
||||
|
||||
# Función para instalar glab en sistemas basados en Red Hat/Fedora
|
||||
install_glab_redhat() {
|
||||
echo "Instalando GitLab CLI en sistema basado en Red Hat/Fedora..."
|
||||
|
||||
# Verificar si dnf está instalado
|
||||
if command -v dnf &> /dev/null; then
|
||||
# Verificar si glab está disponible en los repositorios
|
||||
echo "Verificando si glab está disponible en los repositorios..."
|
||||
dnf list glab &>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI encontrado en los repositorios. Instalando..."
|
||||
dnf install -y glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente desde los repositorios oficiales."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si no está en los repositorios, usar el script oficial
|
||||
if command -v gpg &> /dev/null; then
|
||||
echo "Usando script oficial de instalación..."
|
||||
curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante script oficial."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si el método anterior falla, probar con snap
|
||||
if command -v snap &> /dev/null; then
|
||||
echo "Intentando instalar mediante snap..."
|
||||
snap install glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante snap."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
# Si dnf no está disponible, pero yum sí
|
||||
elif command -v yum &> /dev/null; then
|
||||
# Verificar si glab está disponible en los repositorios
|
||||
echo "Verificando si glab está disponible en los repositorios..."
|
||||
yum list glab &>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI encontrado en los repositorios. Instalando..."
|
||||
yum install -y glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente desde los repositorios oficiales."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si los métodos anteriores fallan, probar con Homebrew
|
||||
echo "Intentando instalar mediante Homebrew..."
|
||||
install_glab_homebrew
|
||||
return $?
|
||||
}
|
||||
|
||||
# Función para instalar glab en Arch Linux
|
||||
install_glab_arch() {
|
||||
echo "Instalando GitLab CLI en Arch Linux..."
|
||||
|
||||
# Intentar primero usando el repositorio oficial
|
||||
if command -v pacman &> /dev/null; then
|
||||
# Verificar si glab está en los repositorios
|
||||
if pacman -Ss glab | grep -q "^community/glab"; then
|
||||
pacman -Sy --noconfirm glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente desde los repositorios oficiales."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si no está en los repositorios, intentar con yay (AUR)
|
||||
if command -v yay &> /dev/null; then
|
||||
yay -S --noconfirm glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente desde AUR."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si los métodos anteriores fallan, probar con Homebrew
|
||||
echo "Intentando instalar mediante Homebrew..."
|
||||
install_glab_homebrew
|
||||
return $?
|
||||
}
|
||||
|
||||
# Función para instalar glab en sistemas basados en SUSE
|
||||
install_glab_suse() {
|
||||
echo "Instalando GitLab CLI en sistema basado en SUSE..."
|
||||
|
||||
# Intentar primero usando el script oficial
|
||||
if command -v gpg &> /dev/null; then
|
||||
echo "Usando script oficial de instalación..."
|
||||
curl -s https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh | bash
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante script oficial."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si el método anterior falla, probar con snap
|
||||
if command -v snap &> /dev/null; then
|
||||
echo "Intentando instalar mediante snap..."
|
||||
snap install glab
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante snap."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si los métodos anteriores fallan, probar con Homebrew
|
||||
echo "Intentando instalar mediante Homebrew..."
|
||||
install_glab_homebrew
|
||||
return $?
|
||||
}
|
||||
|
||||
# Función para instalar directamente usando Go
|
||||
install_glab_go() {
|
||||
echo "Intentando instalar GitLab CLI mediante Go..."
|
||||
|
||||
# Verificar si Go está instalado
|
||||
if ! command -v go &> /dev/null; then
|
||||
echo "Go no está instalado. Se requiere Go para este método de instalación."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Instalar GitLab CLI mediante Go
|
||||
go install gitlab.com/gitlab-org/cli/cmd/glab@main
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "GitLab CLI instalado correctamente mediante Go."
|
||||
echo "Asegúrese de que \$GOPATH/bin esté en su PATH."
|
||||
echo "Por ejemplo, puede agregar lo siguiente a su ~/.bashrc o ~/.zshrc:"
|
||||
echo "export PATH=\$PATH:\$HOME/go/bin"
|
||||
return 0
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitLab CLI mediante Go."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar usando método binario genérico
|
||||
install_glab_binary() {
|
||||
echo "Instalando GitLab CLI usando binarios precompilados..."
|
||||
|
||||
# Crear directorio temporal
|
||||
TMP_DIR=$(mktemp -d)
|
||||
cd "$TMP_DIR" || return 1
|
||||
|
||||
# Detectar arquitectura
|
||||
ARCH=$(uname -m)
|
||||
case "$ARCH" in
|
||||
x86_64)
|
||||
ARCH="amd64"
|
||||
;;
|
||||
aarch64|arm64)
|
||||
ARCH="arm64"
|
||||
;;
|
||||
*)
|
||||
echo "Arquitectura no soportada: $ARCH"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Detectar sistema operativo
|
||||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Obtener la última versión
|
||||
LATEST_VERSION=$(curl -s https://api.github.com/repos/profclems/glab/releases/latest | grep "tag_name" | cut -d'"' -f4)
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
LATEST_VERSION="v1.25.0" # Versión de respaldo si no se puede obtener la última
|
||||
fi
|
||||
|
||||
# Construir URL de descarga
|
||||
DOWNLOAD_URL="https://github.com/profclems/glab/releases/download/${LATEST_VERSION}/glab_${LATEST_VERSION:1}_${OS}_${ARCH}.tar.gz"
|
||||
|
||||
echo "Descargando GitLab CLI desde: $DOWNLOAD_URL"
|
||||
|
||||
# Descargar y extraer
|
||||
curl -L "$DOWNLOAD_URL" -o glab.tar.gz
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: No se pudo descargar GitLab CLI."
|
||||
cd - > /dev/null
|
||||
rm -rf "$TMP_DIR"
|
||||
return 1
|
||||
fi
|
||||
|
||||
tar xzf glab.tar.gz
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: No se pudo extraer el archivo de GitLab CLI."
|
||||
cd - > /dev/null
|
||||
rm -rf "$TMP_DIR"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Instalar binario
|
||||
mv bin/glab /usr/local/bin/glab
|
||||
chmod +x /usr/local/bin/glab
|
||||
|
||||
# Limpiar
|
||||
cd - > /dev/null
|
||||
rm -rf "$TMP_DIR"
|
||||
|
||||
# Verificar instalación
|
||||
if command -v glab &> /dev/null; then
|
||||
echo "GitLab CLI instalado correctamente mediante binarios precompilados."
|
||||
return 0
|
||||
else
|
||||
echo "ERROR: No se pudo instalar GitLab CLI mediante binarios precompilados."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para verificar si glab está instalado
|
||||
check_glab() {
|
||||
if command -v glab &> /dev/null; then
|
||||
echo "GitLab CLI ya está instalado."
|
||||
echo "Versión actual:"
|
||||
glab --version
|
||||
read -p "¿Desea reinstalar o actualizar? (s/n): " REINSTALL
|
||||
if [[ ! "$REINSTALL" =~ ^[Ss]$ ]]; then
|
||||
echo "Operación cancelada."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
# Verificar si ya está instalado
|
||||
check_glab
|
||||
|
||||
# Verificar privilegios de root (excepto en macOS)
|
||||
if [ "$(uname -s)" != "Darwin" ]; then
|
||||
check_root "$@"
|
||||
fi
|
||||
|
||||
# Detectar la distribución
|
||||
detect_distro
|
||||
|
||||
# Intentar instalar según la distribución
|
||||
install_success=false
|
||||
|
||||
case $DISTRO in
|
||||
ubuntu|debian|linuxmint|pop|elementary|raspbian)
|
||||
install_glab_debian
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
;;
|
||||
fedora|rhel|centos|rocky|almalinux)
|
||||
install_glab_redhat
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
;;
|
||||
arch|manjaro|endeavouros)
|
||||
install_glab_arch
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
;;
|
||||
opensuse*|suse|sles)
|
||||
install_glab_suse
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
;;
|
||||
darwin)
|
||||
install_glab_homebrew
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Distribución no soportada directamente: $DISTRO"
|
||||
echo "Intentando métodos alternativos..."
|
||||
;;
|
||||
esac
|
||||
|
||||
# Si no se pudo instalar con el método específico para la distribución, intentar métodos alternativos
|
||||
if [ "$install_success" = false ]; then
|
||||
echo "Intentando métodos alternativos de instalación..."
|
||||
|
||||
# Intentar instalar con Go
|
||||
if command -v go &> /dev/null; then
|
||||
install_glab_go
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si aún no se ha instalado, probar con binarios precompilados
|
||||
if [ "$install_success" = false ]; then
|
||||
install_glab_binary
|
||||
if [ $? -eq 0 ]; then
|
||||
install_success=true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si todos los métodos fallan
|
||||
if [ "$install_success" = false ]; then
|
||||
echo "No se pudo instalar GitLab CLI con ninguno de los métodos disponibles."
|
||||
echo "Por favor, visite https://gitlab.com/gitlab-org/cli para instrucciones de instalación manual."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Verificar la instalación
|
||||
if command -v glab &> /dev/null; then
|
||||
echo "GitLab CLI instalado correctamente."
|
||||
glab --version
|
||||
|
||||
# Sugerir autenticación
|
||||
echo ""
|
||||
echo "Para autenticarse con GitLab, ejecute:"
|
||||
echo "glab auth login"
|
||||
echo ""
|
||||
echo "Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md"
|
||||
else
|
||||
echo "ERROR: La instalación de GitLab CLI falló."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main "$@"
|
||||
|
||||
exit 0
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# gpg_init.sh
|
||||
# Modified: 2024/12/09 10:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# Script: gpg_init.sh
|
||||
# Description: Script de inicialización de estructura para firma GPG
|
||||
# Created: 2024/12/09 10:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,10 +21,23 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
@ -43,8 +60,6 @@ load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
|||
# Load gpg messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "gpg"
|
||||
|
||||
|
||||
|
||||
########### MAIN PROGRAM ###########
|
||||
|
||||
# Set program title
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# helix_install.sh
|
||||
# Modified: 2025/03/11 15:00:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# Script: helix_install.sh
|
||||
# Description: Script para instalar Helix Editor
|
||||
# Created: 2025/03/11 15:00:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -21,22 +25,32 @@
|
|||
# Uso:
|
||||
# ./helix_install.sh
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
apps_title="${hx_001}"
|
||||
|
||||
|
@ -221,6 +235,10 @@ install_helix_tarball() {
|
|||
if [ "$EUID" -ne 0 ]; then
|
||||
dialog_error_box "${head_superuser}" "${hx_011}"
|
||||
dialog_input_pass "${npm_002}" "" ""
|
||||
if [ $? -ne 0 ]; then
|
||||
dialog_error_box "${head_error}" "${npm_003}"
|
||||
finish
|
||||
fi
|
||||
SUDO_PASS="$value"
|
||||
|
||||
# Verificar que la contraseña funcione
|
||||
|
@ -278,4 +296,4 @@ else
|
|||
fi
|
||||
|
||||
# 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")"
|
||||
DATEBAK="$(date +"%Y%m%d%H%M%S")"
|
||||
|
||||
FREEKV_URL=$(cat < "${BIN_HOME}/${BIN_BASE}/${CONFPATH}/freekeyval.dat")
|
||||
FREEKV_URL=$(cat < "${BIN_PATH:=${BIN_HOME}}/${CONFPATH}/freekeyval.dat")
|
||||
FREEKV_SOPS_FILE=freekv-sops.devs.yaml
|
||||
|
||||
DOCKER_LOCAL=dockerfile.local
|
||||
|
@ -44,8 +44,6 @@ DOCKER_BUILD=build
|
|||
DOCKER_FILE=Dockerfile
|
||||
DOCKER_ENTRY=entrypoint.sh
|
||||
|
||||
VERSION="$(cat < ${BIN_HOME}/${BIN_CONF}/version)"
|
||||
|
||||
# Verificar si el script se está ejecutando como usuario root (superusuario)
|
||||
function is_root() {
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
#!/bin/bash
|
||||
# npm_install.sh
|
||||
# Script interactivo para instalar Node.js y npm en múltiples sistemas operativos
|
||||
# Soporta: Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)
|
||||
# Requiere: dialog
|
||||
# Modified: 2025/03/09 10:27:00
|
||||
# Creado por [Cortana Rosero One <cortana@rosero.one>]
|
||||
# Generado con inteligencia artificial Claude Source
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# Script: npm_install.sh
|
||||
# Description: # Script interactivo para instalar Node.js y npm en múltiples sistemas operativos
|
||||
# Created: 2025/03/09 10:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -21,22 +21,32 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Función para limpiar la pantalla y salir
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# profile_backup.sh
|
||||
# Modified: 2024/12/09 10:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# Script: profile_backup.sh
|
||||
# Description: Script para hacer copia de seguridad del perfil del desarrollador
|
||||
# Created: 2024/12/09 10:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,37 +21,48 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
# LOAD CONSOLE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib
|
||||
#consolelib_test
|
||||
|
||||
# LOAD SQLITE3 BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/sqlite.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib
|
||||
#sqlitelib_test
|
||||
|
||||
# LOAD DEVELOPERS BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/developers.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib
|
||||
#gpglib_test
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head"
|
||||
|
||||
# Load gpg messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers"
|
||||
|
||||
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers"
|
||||
|
||||
########### MAIN PROGRAM ###########
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# profile_restore.sh
|
||||
# Modified: 2024/12/15 14:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# Script: profile_restore.sh
|
||||
# Description: para restaurar copia de seguridad del perfil del desarrollador
|
||||
# Created: 2024/12/15 14:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,37 +21,48 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
# LOAD CONSOLE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib
|
||||
#consolelib_test
|
||||
|
||||
# LOAD SQLITE3 BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/sqlite.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/sqlite.lib
|
||||
#sqlitelib_test
|
||||
|
||||
# LOAD DEVELOPERS BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/developers.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/developers.lib
|
||||
#gpglib_test
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head"
|
||||
|
||||
# Load developers messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers"
|
||||
# Load gpg messages
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "developers"
|
||||
|
||||
# Function to display help message
|
||||
function help() {
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
#
|
||||
# Script: project_new.sh
|
||||
# Description: Crea una carpeta de proyecto con la estructura requerida
|
||||
# Modified: 2025-03-12 20:26:07
|
||||
# Created: 2025-03-12 20:26:07
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
|
@ -18,17 +21,36 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Directorios base
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BASE_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
CONFIG_DIR="$SCRIPT_DIR/config"
|
||||
LIB_DIR="$SCRIPT_DIR/lib"
|
||||
MSG_DIR="$SCRIPT_DIR/msg"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Cargar libraries
|
||||
source "$LIB_DIR/base.lib"
|
||||
source "$LIB_DIR/console.lib"
|
||||
source "$MSG_DIR/head.es"
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
CONFIG_DIR=$BIN_HOME/$BIN_CFGS
|
||||
BASE_DIR=$BIN_HOME
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib"
|
||||
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Variables globales
|
||||
title="${head_000} ${head_002}"
|
||||
|
@ -102,7 +124,7 @@ function get_projects_folder() {
|
|||
if [ -f "$CONFIG_DIR/projects.dat" ]; then
|
||||
PROJECTS_DIR_NAME=$(head -n 1 "$CONFIG_DIR/projects.dat")
|
||||
else
|
||||
PROJECTS_DIR_NAME="proyectos"
|
||||
PROJECTS_DIR_NAME="projects"
|
||||
echo "$PROJECTS_DIR_NAME" > "$CONFIG_DIR/projects.dat"
|
||||
fi
|
||||
|
||||
|
@ -151,7 +173,8 @@ function request_project_name() {
|
|||
if [ $? -eq 0 ]; then
|
||||
request_project_name
|
||||
else
|
||||
echo "${proj_007}"
|
||||
dialog_error_box "$head_error" "${proj_007}"
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -860,6 +883,10 @@ function main() {
|
|||
|
||||
# Crear estructura del proyecto
|
||||
create_project_structure
|
||||
|
||||
# Limpiar Consola
|
||||
clear
|
||||
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
|
|
120
bin/qr_secret.sh
120
bin/qr_secret.sh
|
@ -2,11 +2,129 @@
|
|||
#
|
||||
# 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@roser.one>]
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# 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
|
||||
|
|
|
@ -1,265 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Script: standardize_scripts.sh
|
||||
# Description: Estandariza los encabezados y estructura de los scripts Bash
|
||||
# Created: $(date +"%Y/%m/%d %H:%M:%S")
|
||||
# Modified: $(date +"%Y/%m/%d %H:%M:%S")
|
||||
# [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"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# 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} - ${head_002}"
|
||||
apps_title="${head_000} - ${projmsg_007}"
|
||||
HEADER_TEMPLATE="${BIN_HOME}/${BIN_BASE}/${BIN_CFGS}/bash.head"
|
||||
VARIABLES_TEMPLATE="${BIN_HOME}/${BIN_BASE}/${BIN_CFGS}/bash.variables"
|
||||
DEFAULT_AUTHOR="Mauro Rosero P. <mauro@rosero.one>"
|
||||
CORTANA_AUTHOR="Cortana Rosero One <cortana@rosero.one>"
|
||||
CORTANA_GENERATED="Created by Claude Code (claude-3-7-sonnet-20250219)"
|
||||
TODAY=$(date +"%Y/%m/%d %H:%M:%S")
|
||||
|
||||
# Función para extraer información del script existente
|
||||
extract_script_info() {
|
||||
local script_path="$1"
|
||||
local script_name=$(basename "$script_path")
|
||||
local description=""
|
||||
local created_date=""
|
||||
local modified_date="$TODAY"
|
||||
local author="$DEFAULT_AUTHOR"
|
||||
local generated_by=""
|
||||
|
||||
# Extraer descripción si existe
|
||||
description=$(grep -A 5 "Description:" "$script_path" | grep "Description:" | sed 's/.*Description: \(.*\)/\1/' | head -1)
|
||||
if [ -z "$description" ]; then
|
||||
# Intentar extraer del comentario antes de la primera función o variable
|
||||
description=$(sed -n '/#.*[Ss]cript/p' "$script_path" | head -1 | sed 's/#.*[Ss]cript[^:]*: \(.*\)/\1/')
|
||||
if [ -z "$description" ]; then
|
||||
description="Script para $script_name"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Extraer fecha de creación si existe
|
||||
created_date=$(grep -A 10 "Created:" "$script_path" | grep "Created:" | sed 's/.*Created: \(.*\)/\1/' | head -1)
|
||||
if [ -z "$created_date" ]; then
|
||||
created_date="$TODAY"
|
||||
fi
|
||||
|
||||
# Extraer fecha de modificación si existe
|
||||
mod_date=$(grep -A 10 "Modified:" "$script_path" | grep "Modified:" | sed 's/.*Modified: \(.*\)/\1/' | head -1)
|
||||
if [ ! -z "$mod_date" ]; then
|
||||
modified_date="$mod_date"
|
||||
fi
|
||||
|
||||
# Extraer autor si existe
|
||||
auth=$(grep -A 10 "\[Author\]" "$script_path" | grep "\[Author\]" | sed 's/.*\[Author\] \(.*\)/\1/' | head -1)
|
||||
if [ ! -z "$auth" ]; then
|
||||
author="$auth"
|
||||
fi
|
||||
|
||||
# Extraer información de generación si existe
|
||||
gen=$(grep -A 10 "\[Generated\]" "$script_path" | grep "\[Generated\]" | sed 's/.*\[Generated\] \(.*\)/\1/' | head -1)
|
||||
if [ ! -z "$gen" ]; then
|
||||
generated_by="$gen"
|
||||
elif [[ "$author" == *"Cortana"* ]]; then
|
||||
generated_by="$CORTANA_GENERATED"
|
||||
fi
|
||||
|
||||
# Crear array con la información extraída
|
||||
echo "$script_name|$description|$created_date|$modified_date|$author|$generated_by"
|
||||
}
|
||||
|
||||
# Función para aplicar la plantilla a un script
|
||||
apply_template() {
|
||||
local script_path="$1"
|
||||
local info="$2"
|
||||
|
||||
# Separar la información en variables
|
||||
IFS='|' read -r script_name description created_date modified_date author generated_by <<< "$info"
|
||||
|
||||
# Crear encabezado temporal con la información extraída
|
||||
local temp_header=$(mktemp)
|
||||
cat "$HEADER_TEMPLATE" > "$temp_header"
|
||||
|
||||
# Reemplazar las variables en la plantilla
|
||||
sed -i "s|\$SCRIPT_NAME|$script_name|g" "$temp_header"
|
||||
sed -i "s|\$DESCRIPTION|$description|g" "$temp_header"
|
||||
sed -i "s|\$CREATED_DATE|$created_date|g" "$temp_header"
|
||||
sed -i "s|\$MODIFIED_DATE|$modified_date|g" "$temp_header"
|
||||
sed -i "s|\$AUTHOR|$author|g" "$temp_header"
|
||||
|
||||
if [ ! -z "$generated_by" ]; then
|
||||
sed -i "s|\$GENERATED_BY|$generated_by|g" "$temp_header"
|
||||
else
|
||||
# Si no hay información de generación, eliminar esa línea
|
||||
sed -i '/\$GENERATED_BY/d' "$temp_header"
|
||||
fi
|
||||
|
||||
# Extraer el cuerpo del script (todo excepto el encabezado)
|
||||
local temp_body=$(mktemp)
|
||||
# Encontrar línea después del encabezado (primera línea en blanco después de los comentarios iniciales)
|
||||
local header_end=$(grep -n "^$" "$script_path" | head -1 | cut -d: -f1)
|
||||
if [ -z "$header_end" ]; then
|
||||
header_end=25 # Valor predeterminado si no se encuentra una línea en blanco
|
||||
fi
|
||||
|
||||
# Extraer el cuerpo del script
|
||||
tail -n +$header_end "$script_path" > "$temp_body"
|
||||
|
||||
# Crear el nuevo script combinando el encabezado y el cuerpo
|
||||
cat "$temp_header" > "$script_path"
|
||||
echo "" >> "$script_path" # Línea en blanco después del encabezado
|
||||
cat "$temp_body" >> "$script_path"
|
||||
|
||||
# Limpiar archivos temporales
|
||||
rm -f "$temp_header" "$temp_body"
|
||||
|
||||
echo "Estandarizado: $script_path"
|
||||
}
|
||||
|
||||
# Función para estandarizar variables comunes en el script
|
||||
standardize_variables() {
|
||||
local script_path="$1"
|
||||
|
||||
# Buscar y reemplazar patrones comunes de variables
|
||||
if grep -q "DEVSPATH=" "$script_path"; then
|
||||
# Determinar dónde comienzan las variables
|
||||
local var_line=$(grep -n "DEVSPATH=" "$script_path" | head -1 | cut -d: -f1)
|
||||
local next_section=$(grep -n "^# " "$script_path" | awk -v start="$var_line" '$1 > start {print $1; exit}' | cut -d: -f1)
|
||||
|
||||
if [ -z "$next_section" ]; then
|
||||
# Si no hay otra sección, buscar la primera función
|
||||
next_section=$(grep -n "^[a-zA-Z_][a-zA-Z0-9_]*().*{" "$script_path" | head -1 | cut -d: -f1)
|
||||
if [ -z "$next_section" ]; then
|
||||
# Si no hay función, usar el final del archivo
|
||||
next_section=$(wc -l "$script_path" | awk '{print $1}')
|
||||
fi
|
||||
fi
|
||||
|
||||
# Crear un archivo temporal con el contenido antes de las variables
|
||||
local temp_before=$(mktemp)
|
||||
head -n $((var_line - 1)) "$script_path" > "$temp_before"
|
||||
|
||||
# Crear un archivo temporal con el contenido después de las variables
|
||||
local temp_after=$(mktemp)
|
||||
tail -n +$next_section "$script_path" > "$temp_after"
|
||||
|
||||
# Crear el nuevo script
|
||||
cat "$temp_before" > "$script_path"
|
||||
cat "$VARIABLES_TEMPLATE" >> "$script_path"
|
||||
echo "" >> "$script_path" # Añadir línea en blanco
|
||||
cat "$temp_after" >> "$script_path"
|
||||
|
||||
# Limpiar archivos temporales
|
||||
rm -f "$temp_before" "$temp_after"
|
||||
fi
|
||||
|
||||
# Estandarizar la carga de bibliotecas
|
||||
if ! grep -q "source .*base.lib" "$script_path"; then
|
||||
echo -e "\n# Importar bibliotecas necesarias\nsource \"\${BIN_HOME}/\${BIN_BASE}/\${BIN_LIBS}/base.lib\"" >> "$script_path"
|
||||
fi
|
||||
|
||||
# Estandarizar la carga de mensajes si aún no existe
|
||||
if ! grep -q "load_messages" "$script_path"; then
|
||||
echo -e "\n# Cargar mensajes en el idioma del sistema o español por defecto\nload_messages \"\${BIN_HOME}/\${BIN_BASE}\" \"\${BIN_MESG}\" \"\${BIN_LANG}\" \"head\"" >> "$script_path"
|
||||
fi
|
||||
|
||||
# Estandarizar la definición del título si no existe
|
||||
if ! grep -q "title=" "$script_path"; then
|
||||
echo -e "\n# Variables globales\ntitle=\"\${head_000} \${head_002}\"" >> "$script_path"
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
dialog_error_box "$title" "${head_info}: ${head_002} $BIN_HOME/$BIN_BASE"
|
||||
|
||||
# Verificar que existe la plantilla de encabezado
|
||||
if [ ! -f "$HEADER_TEMPLATE" ]; then
|
||||
dialog_error_box "$title" "${head_error}: ${head_nobuild} $HEADER_TEMPLATE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar que existe la plantilla de variables
|
||||
if [ ! -f "$VARIABLES_TEMPLATE" ]; then
|
||||
dialog_error_box "$title" "${head_error}: ${head_nodockerfile} $VARIABLES_TEMPLATE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Contar scripts a procesar
|
||||
local total_scripts=$(find "$BIN_HOME/$BIN_BASE" -name "*.sh" | wc -l)
|
||||
local current=0
|
||||
|
||||
dialog_error_box "${head_info}" "${head_container} $total_scripts"
|
||||
|
||||
# Recorrer todos los scripts .sh en el directorio bin
|
||||
for script in "$BIN_HOME/$BIN_BASE"/*.sh; do
|
||||
current=$((current + 1))
|
||||
|
||||
# Saltar el script actual para evitar problemas
|
||||
if [ "$(basename "$script")" == "$(basename "$0")" ]; then
|
||||
echo "[$current/$total_scripts] ${head_exit}: $(basename "$script")"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "[$current/$total_scripts] ${head_info}: $(basename "$script")"
|
||||
|
||||
# Hacer una copia de seguridad del script
|
||||
cp "$script" "${script}.bak"
|
||||
|
||||
# Extraer información del script
|
||||
local script_info=$(extract_script_info "$script")
|
||||
|
||||
# Aplicar la plantilla de encabezado
|
||||
apply_template "$script" "$script_info"
|
||||
|
||||
# Estandarizar variables y estructura común
|
||||
standardize_variables "$script"
|
||||
|
||||
echo " ✓ ${head_create}: $(basename "$script")"
|
||||
done
|
||||
|
||||
dialog_error_box "${head_info}" "${head_builded} $current ${head_container}.\n\n${head_version}.bak"
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# update.sh
|
||||
# Modified: 2025/03/15 18:25:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# Script: update.sh
|
||||
# Description: Script para update.sh
|
||||
# Created: 2025/03/15 18:25:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,16 +21,25 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
# Configuración inicial
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
load_bootstrap_msg() {
|
||||
|
@ -59,7 +72,7 @@ else
|
|||
fi
|
||||
|
||||
# Load bootstrap library for update functions
|
||||
source $BIN_HOME/$BIN_LIBS/bootstrap.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/bootstrap.lib
|
||||
|
||||
# Update sistema operativo y repositorios primero (no requiere privilegios de root)
|
||||
echo -e "\n${head_info}: Actualizando repositorios locales primero..."
|
||||
|
@ -190,7 +203,7 @@ update_additional_tools() {
|
|||
local UPDATE_LANG=$4
|
||||
|
||||
# Cargar biblioteca bootstrap para acceder a las funciones de instalación
|
||||
source "$BIN_PATH/$LIBRARY/bootstrap.lib"
|
||||
source "$BIN_PATH/$BIN_BASE/$LIBRARY/bootstrap.lib"
|
||||
|
||||
# Actualizar oathtool si está instalado
|
||||
command_installed oathtool
|
||||
|
@ -211,7 +224,7 @@ update_additional_tools() {
|
|||
|
||||
# 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_LIBS $BIN_MESG $BIN_LANG"
|
||||
sudo bash -c "$(declare -f command_installed; declare -f update_additional_tools); update_additional_tools $BIN_HOME/$BIN_BASE $BIN_LIBS $BIN_MESG $BIN_LANG"
|
||||
|
||||
echo -e "\n${head_info}: Proceso de actualización completado."
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# vpn_install.sh
|
||||
# Modified: 2024/12/01 15:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
# Script: vpn_install.sh
|
||||
# Description: Script para vpn_install.sh
|
||||
# Created: 2024/12/01 15:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,19 +21,34 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
# Importar bibliotecas necesarias
|
||||
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
|
||||
|
||||
# Cargar mensajes en el idioma del sistema o español por defecto
|
||||
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
|
||||
|
||||
# Variables globales
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
function load_bootstrap_msg() {
|
||||
|
||||
|
@ -63,7 +82,7 @@ function install() {
|
|||
local UPDATE=$5
|
||||
|
||||
# Load base bash library
|
||||
BIN_HOME=$BIN_PATH
|
||||
BIN_HOME=$BIN_PATH
|
||||
source $BIN_PATH/$LIBRARY/base.lib
|
||||
|
||||
# Load bootstrap bash library
|
||||
|
@ -93,9 +112,6 @@ function install() {
|
|||
esac
|
||||
}
|
||||
|
||||
# Load messages
|
||||
load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG
|
||||
|
||||
# Check for arguments option
|
||||
help=false
|
||||
version=false
|
||||
|
@ -132,7 +148,8 @@ if $version; then
|
|||
fi
|
||||
|
||||
# Display Headers
|
||||
display_devstools_header "- $title"
|
||||
display_devstools_header "PRITUNL VPN"
|
||||
|
||||
# Run install with sudo
|
||||
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG $update"
|
||||
BIN_USER=$(echo $BIN_HOME/$BIN_BASE)
|
||||
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_USER $BIN_LIBS $BIN_MESG $BIN_LANG $update"
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# vpn_users.sh
|
||||
# Modified: 2024/12/01 15:27:00
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
|
||||
# Script: vpn_users.sh
|
||||
# Description: Script para vpn_users.sh
|
||||
# Created: 2024/12/01 15:27:00
|
||||
# Modified: 2025/03/19 11:57:08
|
||||
# [Author] Mauro Rosero P. <mauro@rosero.one>
|
||||
#
|
||||
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
|
@ -17,31 +21,42 @@
|
|||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_CFGS/version")
|
||||
# Configuración inicial
|
||||
# Usar DEVELOPER_DIR de base.lib
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
BIN_HOME="$HOME/$DEVSPATH"
|
||||
BIN_PATH=$BIN_HOME/$BIN_BASE
|
||||
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
|
||||
# LOAD CONSOLE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||
source $BIN_HOME/$BIN_BASE/$BIN_LIBS/console.lib
|
||||
#consolelib_test
|
||||
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "head"
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "pritunl"
|
||||
load_messages $BIN_HOME/$BIN_BASE $BIN_MESG $BIN_LANG "pritunl"
|
||||
|
||||
# Function to display help message
|
||||
function help() {
|
||||
|
@ -61,7 +76,7 @@ function vpn_pritunl_users_form() {
|
|||
|
||||
declare -a ARRAY
|
||||
c_val[0]=013
|
||||
read_file_to_array "${BIN_HOME}/${BIN_CFGS}/pritunl-orgs.dat"
|
||||
read_file_to_array "${BIN_HOME}/${BIN_BASE}/${BIN_CFGS}/pritunl-orgs.dat"
|
||||
if [ $? -ne 0 ]; then
|
||||
ARRAY[0]=""
|
||||
c_val[0]=0
|
||||
|
@ -104,10 +119,10 @@ function vpn_pritunl_users_form() {
|
|||
display_devstools_header "${plmsg_000}"
|
||||
if [ "${action}" != "remove" ]
|
||||
then
|
||||
ansible-playbook -i ${BIN_HOME}/inventory/base.ini ${BIN_HOME}/bin/ansible/pritunl_users.yaml \
|
||||
ansible-playbook -i ${BIN_HOME}/inventory/base.ini ${BIN_HOME}/${BIN_BASE}/${BIN_ANSIBLE}/pritunl_users.yaml \
|
||||
-e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]} input_pritunl_email=${response[2]}"
|
||||
else
|
||||
ansible-playbook -i $BIN_HOME/inventory/base.ini ${BIN_HOME}/bin/ansible/pritunl_users.yaml \
|
||||
ansible-playbook -i $BIN_HOME/inventory/base.ini ${BIN_HOME}/${BIN_BASE}/${BIN_ANSIBLE}/pritunl_users.yaml \
|
||||
-e "input_pritunl_action=${action} input_pritunl_org=${response[0]} input_pritunl_user=${response[1]}"
|
||||
fi
|
||||
read -p "${head_pause}"
|
||||
|
|
21
sops/jarvis.sops.yaml
Normal file
21
sops/jarvis.sops.yaml
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"data": "ENC[AES256_GCM,data:0QDmEqXpOKs0v1ga5BGLKBMUfG3oonXdwJywtiZEuDzOflSFO9wteezYIz2na85Zlli5I+pYUpt96lg43ZqZ9ZiyCrpfrfuDqcVscVSr9iWc+rMAYjLVBUZI5+gH1PsUZFlG5o+ioKl+tYunFU9hKx7FbHRFIe1AGbweoDxy6mMjqwxHwdopoHoV+8zoSqK5XFo=,iv:HdXQhmFARl9mlAIxfHFjrKT6+wG0SZQ0yvVH9W9yruw=,tag:5wAk2e5wXi5ckDA25tK5kA==,type:str]",
|
||||
"sops": {
|
||||
"kms": null,
|
||||
"gcp_kms": null,
|
||||
"azure_kv": null,
|
||||
"hc_vault": null,
|
||||
"age": null,
|
||||
"lastmodified": "2025-03-19T19:20:07Z",
|
||||
"mac": "ENC[AES256_GCM,data:OdAbCBM749u+2jNyWCeqWEZjQhZPBbrFX5D+D00oFCMHdU1SFPE4+7+bcGdjS2sdzgU5VQJhj72RRK0RYToRBQDoW17lmXHhvShrXAfHmtCr27ikjDTRnecBFgGOrzk3LkADtNj33w0U7OeQjC5BzLBXlIJzRCjoAFigXIbvrUA=,iv:8mFrzFyUTx43Pk8ntw7MGc3y2MDgGLBz2lNQQe1J4IA=,tag:dmwrgkBntqtG9z0aNjnCOg==,type:str]",
|
||||
"pgp": [
|
||||
{
|
||||
"created_at": "2025-03-19T19:20:07Z",
|
||||
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/ARAAwYo+n42glMyddN5Ci5aKAp6Eg8rJKSQnzFKAT9CBHCeV\n8p9uymDsEq/BBaUDr3s7uFHHSwMgJLYUfAFcAXC7nFInxQ1t1miUr45njIaKMTuX\nnr72Y6U2xwYlY0vzYC4hmBiedJyRbBV8AIveZLZdhugGq6bsrdJOHjyC67JwwmKX\nZwgmLaCS6qDxoIKnyFIoPWVz4FZCE4y6A27fkXpSjU70/8yZC9ghMN1IXFNsJx6C\nrsyS0tyIwZcz5MSWcSNczgpzC9+UJFGAvZwR2geyUi0xrZpuXD2NAmU2nklG+YsN\ntbdJErFmWvZZBi6Si6AxHaHZLDgGsZq6DltBSjN/ySuNVeZ7M3opi28bHKFwYC2J\n9AAUhNzQIDBA4MQrPLy1u3C6PB6AS6aZ9jnVm3IeWyQUZ0Pk5Xysvp9Re230gMTy\nfR4rESQ0RohBMpMptlYEAZR/PebPSMnH5wikvb84FIROhhcEbn29lOw/ssEHdj7D\nO0VdqDLoW6znHCiuB5NfIxV4x98c5e2/c0KYiZQqRFmGuSndB17M5S8knD8VSJ83\nUIrQtH+Mjp1Yifx4AvPa2TQrmaQNH7dcjtkd5Tqun8NoBYUPv8jTH36ti+lyt2gZ\nSwegV+bTaeMZhvOsc1k2MAtchv8nKno8NQberUIytZteoWJWZs+iBd1/VFBpF4zS\nXgHeYOAtI0FjkX4kVrANwtFcFe7E7/6HgXeUNn2seuapqWp1/1TuVjzv+KM5R+3a\nAk4pwoi0wQnjj0Jk1qE7kDUrQGAxP/gb117ACEewOh1BogMZWvw0YW5xa53iPz4=\n=+/ik\n-----END PGP MESSAGE-----",
|
||||
"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07"
|
||||
}
|
||||
],
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.9.2"
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue