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