# MRDevs Tools
## 📋 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/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' |
### 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 |
| `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/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
MRDevs Tools facilita el trabajo con herramientas de IA como Claude Code CLI:
```bash
# 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`.
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/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](https://cli.github.com/manual/).
#### GitLab CLI (glab)
```bash
# 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](https://gitlab.com/gitlab-org/cli/-/blob/main/docs/index.md).
#### Gestión de tokens para control de versiones
```bash
# 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
```bash
# 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:
```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`, `console.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 scripts bash, use la plantilla de encabezado que está en `bin/config/bash.header`:
```bash
#!/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
#
# Derechos de Autor (C) [YYYY] [Su Nombre ]
```
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.