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