# MRDevs Tools

License: AGPL-3.0 Version: 1.0.0

## 📋 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 ```bash # 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/cortana_install.sh` | Instala Claude Code CLI (Cortana) | | `bin/cortana_install.sh -u` | Desinstala Claude Code CLI | | `bin/cortana_token.sh` | Gestiona la encriptación del token de Cortana vía SOPS | | `bin/cortana_alias.sh` | Configura alias de línea de comandos para Cortana | | `bin/cortana_enable.sh` | Activa el uso de Cortana | | `bin/cortana_disable.sh` | Desactiva temporalmente Cortana | ### 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/ghcli_install.sh` | Instala GitHub CLI (gh) con soporte multiplataforma | | `bin/glcli_install.sh` | Instala GitLab CLI (glab) con múltiples métodos de instalación | | `bin/fjcli_install.sh` | Instala Forgejo/Codeberg CLI vía Cargo | | `bin/cversadm_token.sh` | Gestiona tokens de acceso para plataformas de control de versiones de forma segura | | `bin/fj_login.sh` | Inicia/cierra sesión en Forgejo usando tokens encriptados con SOPS | ### 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/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 ` | 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](https://podman.io/) sobre [docker](https://www.docker.com/) como gestor de contenedores. Si desea usar Docker en lugar de Podman, debe instalarlo manualmente antes de ejecutar `bootstrap.sh`. ### Configuración de Claude Code (Cortana) MRDevs Tools facilita el trabajo con herramientas de IA como Claude Code CLI: ```bash # Instalación bin/cortana_install.sh # Gestión del token de forma segura bin/cortana_token.sh # Crear alias para facilitar su uso bin/cortana_alias.sh # Habilitar uso de Cortana bin/cortana_enable.sh # Deshabilitar temporalmente Cortana bin/cortana_disable.sh ``` El token se encripta usando SOPS y se almacena de forma segura en `$HOME/.cortana/cortana.sops.yaml`. 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: ```bash # 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) ```bash # Instalación automatizada bin/ghcli_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](https://cli.github.com/manual/). #### GitLab CLI (glab) ```bash # Instalación automatizada bin/glcli_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](https://gitlab.com/gitlab-org/cli/-/blob/main/docs/index.md). #### Forgejo/Codeberg CLI ```bash # Instalación automatizada bin/fjcli_install.sh ``` El script instala la CLI mediante Cargo (el gestor de paquetes de Rust): - Verifica si Cargo está instalado y lo instala si es necesario - Instala codeberg-cli que es compatible con servidores Forgejo Para aprender a usar Codeberg CLI (compatible con Forgejo), consulta la [documentación en el repositorio de Codeberg CLI](https://codeberg.org/RobWalt/codeberg-cli). #### Gestión de tokens para control de versiones ```bash # Gestión segura de tokens de acceso bin/cversadm_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 usando token encriptado ```bash # Iniciar sesión en Forgejo usando el token encriptado bin/fj_login.sh # Cerrar sesión de Forgejo bin/fj_login.sh --logout ``` Este script facilita la autenticación con Forgejo/Codeberg CLI (berg): - Utiliza el token almacenado y encriptado por cversadm_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 ### Copias de Seguridad Para respaldar configuraciones importantes: ```bash 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: ```bash bin/profile_restore.sh ``` ### Creación de Proyectos Estandarizados MRDevs Tools proporciona una forma estandarizada de crear nuevos proyectos con `project_new.sh`: ```bash # 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: ```bash # 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: ```bash # 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`, etc.) - **Sistema de Mensajes**: Soporte multilingüe para internacionalización - **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 - **Creación de Proyectos**: Sistema estandarizado de plantillas para diversos tipos de proyectos - **Backup y Seguridad**: Herramientas para respaldar configuraciones de desarrollador ## 💻 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 archivos Python, use la plantilla de encabezado que está en `bin/config/python.head`: ```python #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Programa: nombre_archivo.py Descripción: Breve descripción del programa Autor: Su Nombre Creación: Fecha de creación Actualización: Fecha de última actualización Versión: X.Y Licencia: AGPL """ ``` 4. Documente cualquier nueva funcionalidad añadida ## 📄 Licencia Este proyecto está licenciado bajo la Licencia Pública General Affero (AGPL) - vea el archivo LICENSE para más detalles. ## 👥 Colaboradores - **Mauro Rosero P.** - Desarrollador Principal - [mauro@rosero.one](mailto:mauro@rosero.one) - **Claude Code** - Asistente Digital - [claude@anthropic.com](mailto:claude@anthropic.com) - **Cortana Rosero One** - Asistente Digital - [cortana@rosero.one](mailto:cortana@rosero.one) ## 📞 Soporte Para dudas o problemas, contacte con: - Email: mauro@rosero.one - Web: https://rosero.one --- **MRDevs Tools** - Simplificando el entorno de desarrollo © 2025 Mauro Rosero P.