devs/README.md
Mauro Rosero P. 2af72ba7f3
[DOCS] Actualización de README con información sobre mensajes internacionalizados
- Mejorada la descripción de nodered.sh con gestión completa de servicio
- Añadida información sobre el sistema de mensajes con prefijos específicos
- Incluidos nuevos componentes del sistema: Gestión de Servicios e Integración con IA
- Añadidas instrucciones para internacionalización en la sección de Contribución
- Actualizada documentación con las mejores prácticas para nuevos scripts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-23 12:52:18 -05:00

18 KiB

MRDevs Tools

License: AGPL-3.0 Version: 1.2.0

Shell: 78% Python: 5% Bash Lib: 15% Config: 2%

📋 Descripción

MRDevs Tools es un conjunto integral de herramientas para entornos de desarrollo que facilita la instalación, configuración y gestión de aplicaciones y servicios en múltiples sistemas operativos. Diseñado para aumentar la productividad de los desarrolladores, este toolkit automatiza tareas repetitivas y estandariza entornos de desarrollo.

🚀 Inicio Rápido

Requisitos Previos

  • Git instalado en su sistema
  • Permisos de administrador (para algunas operaciones)
  • Conexión a Internet

Instalación

# Clonar el repositorio
cd $HOME
git clone https://git.rosero.one/mrosero/devs.git

# Instalar herramientas básicas
cd $HOME/devs
bin/bootstrap.sh

# Actualizar el entorno (opcional)
bin/update.sh

🔧 Funcionalidades Principales

Gestión del Entorno de Desarrollo

Comando Descripción
bin/bootstrap.sh Instala herramientas básicas (incluyendo oathtool y zbar) y configura la gestión de contenedores
bin/update.sh Actualiza el entorno de desarrollo y herramientas (incluyendo oathtool y zbar)
bin/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

Herramientas de IA y Productividad

Comando Descripción
bin/claude_install.sh Instala Claude Code CLI
bin/claude_install.sh -u Desinstala Claude Code CLI
bin/cortana_token.sh Gestiona la encriptación del token de Claude Code vía SOPS
bin/jarvis_token.sh Gestiona la encriptación del token de Jarvis vía SOPS
bin/cortana_alias.sh Configura alias 'cortana' para Claude Code
bin/cortana_unalias.sh Elimina el alias 'cortana'
bin/cortana_enable.sh Activa el alias 'cortana' permanentemente
bin/cortana_disable.sh Desactiva temporalmente el alias 'cortana'
bin/aider_install.sh Instala Aider CLI (asistente de código IA)
bin/aider_install.sh -u Desinstala Aider CLI
bin/sora_enable.sh Activa el alias 'sora' para Aider permanentemente
bin/sora_disable.sh Desactiva el alias 'sora' para Aider
bin/ai_token.sh Gestiona tokens de múltiples proveedores de IA vía SOPS
bin/ollama_up.sh Inicia el servicio Ollama (IA local) con podman-compose
bin/ollama_down.sh Detiene el servicio Ollama (IA local)
bin/ollama.sh Cliente para interactuar con Ollama (auto-inicia el servicio si es necesario)
bin/nodered.sh Administra Node-RED con soporte para ejecución, monitoreo y gestión completa del servicio

Herramientas para Editores de Código

Comando Descripción
bin/helix_install.sh Instala Helix Editor con soporte multiplataforma (apt, snap, pacman, etc.)

Herramientas para Control de Versiones

Comando Descripción
bin/ghadmin_install.sh Instala GitHub CLI (gh) con soporte multiplataforma
bin/gladmin_install.sh Instala GitLab CLI (glab) con múltiples métodos de instalación
bin/fjadmin_install.sh Instala Forgejo CLI (berg) para administración de Forgejo/Codeberg
source bin/forgejo_login.sh Inicia/cierra sesión en Forgejo usando tokens encriptados con SOPS
source bin/github_login.sh Inicia/cierra sesión en GitHub usando tokens encriptados con SOPS
bin/cversion_token.sh Gestiona tokens de acceso para plataformas de control de versiones de forma segura

Seguridad y Acceso

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
bin/vpn_check.sh Verifica conexión a VPN y muestra el tipo de VPN activo
bin/gpg_init.sh Inicializa configuración GPG para cifrado seguro

Gestión de Perfiles

Comando Descripción
bin/profile_backup.sh Realiza copia de seguridad del perfil del desarrollador (GPG, SSH, Git, y carpeta .developer)
bin/profile_restore.sh <archivo> Restaura perfil desde copia de seguridad

Desarrollo Especializado

Comando Descripción
bin/rate_update.py Actualiza tarifas por hora de diferentes tipos de programadores
bin/cocomo.py Calcula costos de proyecto usando el modelo COCOMO

📚 Guía de Usuario

Preparación del Entorno

El directorio $HOME/devs sirve como área principal de desarrollo donde se gestionan diversos ambientes y proyectos. Por razones de seguridad, se prioriza podman sobre docker como gestor de contenedores.

Si desea usar Docker en lugar de Podman, debe instalarlo manualmente antes de ejecutar bootstrap.sh.

Configuración de Herramientas de IA

MRDevs Tools facilita el trabajo con herramientas de IA:

Claude Code CLI

# Instalación
bin/claude_install.sh

# Gestión del token de forma segura
bin/cortana_token.sh

# Crear alias para facilitar su uso (cortana = claude)
bin/cortana_alias.sh

# Habilitar uso del alias permanentemente
bin/cortana_enable.sh

# Deshabilitar temporalmente el alias
bin/cortana_disable.sh

# Eliminar el alias (si es necesario)
bin/cortana_unalias.sh

El token se encripta usando SOPS y se almacena de forma segura en $HOME/.cortana/cortana.sops.yaml.

Aider CLI

# Instalación
bin/aider_install.sh

# Habilitar alias para facilitar su uso (sora = aider)
bin/sora_enable.sh

# Deshabilitar el alias
bin/sora_disable.sh

# Desinstalar (si es necesario)
bin/aider_install.sh -u

Aider es un asistente de código basado en IA que te permite colaborar con modelos de lenguaje de OpenAI directamente desde la terminal. El script de instalación utiliza el instalador oficial de Aider.

Gestor de Tokens de IA

# Gestionar tokens de diferentes proveedores de IA
bin/ai_token.sh

El script ai_token.sh proporciona una forma centralizada y segura de gestionar tokens de API para múltiples proveedores de IA:

  • Muestra un menú interactivo con los proveedores disponibles definidos en bin/config/ai.tokens
  • Solicita y valida el token de API de forma segura
  • Encripta el token usando SOPS y lo almacena en $HOME/sops/{provider}.sops.yaml
  • Incluye verificaciones de seguridad (longitud del token, caracteres válidos)
  • Soporte completo para internacionalización

Proveedores soportados por defecto: Anthropic Claude, OpenAI ChatGPT, Google Gemini, Groq, DeepSeek, HuggingFace, Replicate, OpenRouter, Brave Search, Serper Search, Voyage RAG, Apify y más.

La configuración de proyectos se almacena en bin/config/projects.dat, donde se encuentra el nombre de la carpeta de proyectos utilizada por el sistema.

Instalación de Helix Editor

Helix es un editor de código moderno similar a Vim/Neovim pero con una curva de aprendizaje más amigable:

# Instalación automatizada
bin/helix_install.sh

El script detecta automáticamente tu sistema operativo y utiliza el método de instalación más adecuado:

  • En Ubuntu: Instala mediante snap para obtener la versión más reciente
  • En Arch Linux: Utiliza pacman
  • En Fedora: Instala a través de dnf
  • En otros sistemas: Descarga e instala desde el tarball oficial

Herramientas para Control de Versiones

MRDevs Tools incluye scripts para simplificar la instalación de CLIs para diferentes plataformas Git:

GitHub CLI (gh)

# Instalación automatizada
bin/ghadmin_install.sh

El script detecta tu sistema operativo y utiliza el método de instalación más adecuado:

  • En Debian/Ubuntu: Añade el repositorio oficial de GitHub y usa apt
  • En Red Hat/Fedora: Configura el repositorio rpm y usa dnf
  • En Arch Linux: Instala desde los repositorios oficiales
  • En macOS: Instala a través de Homebrew

Para aprender a usar GitHub CLI, consulta la documentación oficial de GitHub CLI.

GitLab CLI (glab)

# Instalación automatizada
bin/gladmin_install.sh

El script prioriza los métodos de instalación en este orden:

  1. Paquetes oficiales del sistema si están disponibles
  2. Script oficial de instalación de GitLab
  3. Gestores de paquetes como snap o Homebrew
  4. Binarios precompilados o instalación vía Go

Para aprender a usar GitLab CLI, consulta la documentación oficial de GitLab CLI.

Forgejo CLI (berg)

# Instalación automatizada
bin/fjadmin_install.sh

Este script instala Forgejo CLI (berg), la herramienta de línea de comandos para administrar instancias de Forgejo/Codeberg:

  • Verifica e instala las dependencias necesarias (como Rust y Cargo si no están presentes)
  • Instala berg de manera optimizada para tu sistema
  • Configura el entorno correctamente para usar berg
  • Incluye instrucciones posteriores a la instalación

Para aprender a usar Forgejo CLI, consulta la documentación oficial de Forgejo/Codeberg CLI.

Gestión de tokens para control de versiones

# Gestión segura de tokens de acceso
bin/cversion_token.sh

Este script proporciona una interfaz para gestionar tokens de acceso para diferentes plataformas:

  • Permite seleccionar entre Github, Gitlab y Forgejo
  • Solicita y valida el token de forma segura
  • Encripta el token con SOPS y lo almacena en ~/.developer
  • Incluye verificación de formato y seguridad de tokens
  • Gestiona automáticamente permisos para archivos de tokens

Autenticación con Forgejo y GitHub usando token encriptado

# Iniciar sesión en Forgejo usando el token encriptado
source bin/forgejo_login.sh

# Cerrar sesión de Forgejo
source bin/forgejo_login.sh --logout

# Iniciar sesión en GitHub usando el token encriptado
source bin/github_login.sh

# Cerrar sesión de GitHub
source bin/github_login.sh --logout

El script de Forgejo facilita la autenticación con Forgejo/Codeberg CLI (berg):

  • Utiliza el token almacenado y encriptado por cversion_token.sh
  • Desencripta automáticamente el token usando SOPS
  • Detecta la URL de Forgejo basándose en la configuración de git
  • Configura la variable BERG_BASE_URL con la URL detectada
  • Proporciona opciones para login (por defecto) y logout

El script de GitHub facilita la autenticación con GitHub CLI (gh):

  • Utiliza el token almacenado y encriptado por cversion_token.sh
  • Desencripta automáticamente el token usando SOPS
  • Proporciona opciones para login (por defecto) y logout

Copias de Seguridad

Para respaldar configuraciones importantes:

bin/profile_backup.sh

Esto crea un archivo ZIP en $HOME/secure/backups que incluye:

  • Configuración GPG completa
  • Claves SSH y configuración
  • Configuración Git
  • Carpeta .developer (para configuraciones de servidores Git)

La carpeta puede contener múltiples archivos de respaldo con un archivo gpg.secret que contiene la contraseña encriptada. La pérdida de este archivo imposibilitará la restauración.

Para restaurar:

bin/profile_restore.sh <archivo-zip-backup>

Creación de Proyectos Estandarizados

MRDevs Tools proporciona una forma estandarizada de crear nuevos proyectos con project_new.sh:

# Crear un nuevo proyecto
bin/project_new.sh

El script project_new.sh crea proyectos con una estructura completa según el tipo seleccionado:

  • Solicita nombre, tipo, licencia y descripción del proyecto
  • Crea una estructura organizada de carpetas según el tipo de proyecto
  • Inicializa un repositorio Git con archivo .gitignore específico
  • Configura archivos README.md y documentación básica
  • Permite seleccionar el tipo de servidor Git (GitHub, GitLab, Gitea, Forgejo, None)
  • Genera un commit inicial automático

Tipos de proyectos soportados:

  • Python, Node.js, PHP, Rust, C, C++, C#
  • Odoo, Ansible, ESP32/Arduino
  • COBOL y otros tipos personalizados

Cada tipo de proyecto incluye:

  • Estructura de directorios optimizada
  • Archivos de configuración específicos
  • Archivos .gitignore personalizados
  • Documentación inicial básica

Gestión de Tarifas y Costos

MRDevs Tools incluye utilidades para la gestión de tarifas y estimación de costos:

Actualización de Tarifas

El script rate_update.py permite mantener actualizadas las tarifas por hora de diferentes tipos de programadores:

# Actualizar tarifas faltantes
bin/rate_update.py

# Listar todas las tarifas disponibles
bin/rate_update.py --list

# Actualizar la tarifa de un tipo específico de programador
bin/rate_update.py --type python

# Actualizar todas las tarifas, incluso las existentes
bin/rate_update.py --init

Las tarifas se almacenan en archivos individuales dentro de bin/config/rates/ y pueden ser utilizadas por otras herramientas.

Estimación de Costos con COCOMO

El script cocomo.py implementa el modelo COCOMO para estimar costos de proyectos de software basados en las líneas de código:

# Calcular costo de un proyecto
bin/cocomo.py --project /ruta/al/proyecto

# Usar un tipo específico de programador para los costos
bin/cocomo.py --project /ruta/al/proyecto --type devops

# Especificar un modelo COCOMO específico
bin/cocomo.py --project /ruta/al/proyecto --model embedded

# Ignorar patrones adicionales de archivos
bin/cocomo.py --project /ruta/al/proyecto --ignore "*.generated.js" --ignore "vendor/**"

El script analizará el código fuente, contará las líneas efectivas, y calculará estimaciones de esfuerzo, tiempo y costos utilizando las tarifas por hora configuradas.

🔌 Arquitectura del Sistema

Estructura de Directorios

bin/
├── lib/           # Bibliotecas compartidas
├── msg/           # Archivos de mensajes multilingües
├── config/        # Configuraciones y parámetros
│   └── *.gitignore # Plantillas de .gitignore específicas por tipo de proyecto
└── ansible/       # Recursos para automatización

Componentes Principales

  • Bibliotecas Base: Conjunto de funciones reutilizables (base.lib, bootstrap.lib, developers.lib, console.lib, etc.)
  • Sistema de Mensajes: Soporte multilingüe para internacionalización con prefijos específicos por herramienta
  • Gestión de Configuración: Archivos de configuración centralizados, plantillas .gitignore por tipo de proyecto
  • Herramientas de Automatización: Scripts y playbooks de Ansible
  • Gestión de Servicios: Administración de servicios locales como Node-RED, Ollama y más
  • Creación de Proyectos: Sistema estandarizado de plantillas para diversos tipos de proyectos
  • Backup y Seguridad: Herramientas para respaldar configuraciones de desarrollador
  • Integración con IA: Múltiples herramientas para trabajar con proveedores de IA, tokens y modelos locales

💻 Compatibilidad

El proyecto está diseñado para funcionar en múltiples sistemas operativos:

  • Ubuntu/Debian (apt)
  • Red Hat/Fedora (dnf/yum)
  • Arch Linux (pacman)
  • BSD (pkg)
  • macOS (brew)

🤝 Contribución

Para contribuir al proyecto:

  1. Asegúrese de seguir las convenciones de codificación
  2. Use los mensajes de commit con prefijos estándar:
    • [ADDED] - Nueva funcionalidad añadida
    • [IMPROVED] - Mejora en funcionalidad existente
    • [FIXED] - Corrección de errores
    • [SOPS] - Cambios relacionados con encriptación/secretos
    • [DOCS] - Actualización de documentación
    • [INIT] - Inicialización de proyecto o componente
    • [REFACTORED] - Reestructuración de código sin cambios funcionales
    • [MODIFIED] - Cambios menores o ajustes
  3. Para scripts bash, use la plantilla de encabezado que está en bin/config/bash.header:
    #!/bin/bash
    #
    # Script: nombre_archivo.sh
    # Description: Breve descripción del script
    # Created: YYYY/MM/DD HH:MM:SS
    # Modified: YYYY/MM/DD HH:MM:SS
    # [Author] Su Nombre <su.email@ejemplo.com>
    #
    # Derechos de Autor (C) [YYYY] [Su Nombre <su.email@ejemplo.com>]
    
  4. Internacionalización para nuevos scripts:
    • Añada mensajes en los archivos msg/*.es con prefijos específicos (ej. nrmsg_ para Node-RED)
    • Use load_messages en scripts para cargar archivos de mensajes
    • Implemente mensajes con código de formato para variables (ej. printf "${nrmsg_001}" "valor")
  5. Documente cualquier nueva funcionalidad añadida y actualice el README.md

📄 Licencia

Este proyecto está licenciado bajo la Licencia Pública General Affero (AGPL) - vea el archivo LICENSE para más detalles.

👥 Colaboradores

📞 Soporte

Para dudas o problemas, contacte con:


MRDevs Tools - Simplificando el entorno de desarrollo © 2025 Mauro Rosero P.