- Actualizar nombres de scripts (claude_install.sh, ghadmin_install.sh, etc.) - Añadir información sobre cortana_unalias.sh y jarvis_token.sh - Corregir información sobre estructura de directorios - Actualizar ejemplos de comandos para reflejar nuevos nombres - Mejorar sección de contribución con plantilla de bash.header 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
386 lines
No EOL
13 KiB
Markdown
386 lines
No EOL
13 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.0.0-green.svg" alt="Version: 1.0.0">
|
|
</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' |
|
|
|
|
### 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/forgejo_login.sh` | Inicia/cierra sesión en Forgejo 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 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 usando token encriptado
|
|
|
|
```bash
|
|
# Iniciar sesión en Forgejo usando el token encriptado
|
|
bin/forgejo_login.sh
|
|
|
|
# Cerrar sesión de Forgejo
|
|
bin/forgejo_login.sh --logout
|
|
```
|
|
|
|
Este script 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
|
|
|
|
### 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)
|
|
|
|
## 📞 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. |