🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
430 lines
No EOL
15 KiB
Markdown
430 lines
No EOL
15 KiB
Markdown
# MRDevs Tools
|
|
|
|
<p align="center">
|
|
<img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg" alt="License: AGPL-3.0">
|
|
<img src="https://img.shields.io/badge/version-1.2.0-green.svg" alt="Version: 1.2.0">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="https://img.shields.io/badge/Shell-78%25-yellow.svg" alt="Shell: 78%">
|
|
<img src="https://img.shields.io/badge/Python-5%25-blue.svg" alt="Python: 5%">
|
|
<img src="https://img.shields.io/badge/Bash_Lib-15%25-orange.svg" alt="Bash Lib: 15%">
|
|
<img src="https://img.shields.io/badge/Config-2%25-lightgrey.svg" alt="Config: 2%">
|
|
</p>
|
|
|
|
## 📋 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' |
|
|
| `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 |
|
|
|
|
### 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 <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](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 Herramientas de IA
|
|
|
|
MRDevs Tools facilita el trabajo con herramientas de IA:
|
|
|
|
#### 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`.
|
|
|
|
#### Aider CLI
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
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 <archivo-zip-backup>
|
|
```
|
|
|
|
### 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 <su.email@ejemplo.com>
|
|
#
|
|
# Derechos de Autor (C) [YYYY] [Su Nombre <su.email@ejemplo.com>]
|
|
```
|
|
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)
|
|
- **Sora Rosero One** - Asistente Digital - [sora@rosero.one](mailto:sora@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. |