🧛♂️ Vampus
Una herramienta de línea de comandos moderna y asíncrona para gestión de versiones semánticas
Vampus es una herramienta CLI potente y eficiente escrita en Rust que automatiza completamente el proceso de versionado semántico (SemVer) en tus proyectos, proporcionando capacidades avanzadas de actualización, retroceso y previsualización de versiones.
✨ Características Principales
- 🚀 Alto Rendimiento: Construido sobre Tokio para operaciones I/O asíncronas ultrarrápidas
- 📦 Versionado Semántico: Soporte completo para incrementos/decrementos SemVer (
patch,minor,major) - ⏪ Retroceso Inteligente: Comando
downgradepara revertir versiones de manera segura - 👁️ Previsualización: Comando
previewpara validar cambios antes de aplicarlos - 🎯 Multi-archivo: Actualiza versiones consistentemente en múltiples archivos de configuración
- ⚙️ Configuración Flexible: Archivo
.vampus.ymlpara personalizar patrones y archivos objetivo - 🛡️ Operaciones Transaccionales: Verificación previa para prevenir estados inconsistentes
- 🎨 Interfaz Moderna: CLI intuitiva con mensajes informativos y coloridos
🚀 Instalación Rápida
Desde Crates.io (Recomendado)
Desde el Código Fuente
# Clonar el repositorio
# Compilar e instalar
Desde Releases (Binarios Precompilados)
Descarga el binario para tu plataforma desde GitHub Releases.
📖 Guía de Uso
1. Inicialización del Proyecto
# Crear archivo de configuración por defecto
Esto crea un archivo .vampus.yml con la configuración inicial:
current_version: 0.1.0
replaces:
- file: Cargo.toml
pattern: ^version\s*=\s*"{{current_version}}"$
2. Comandos Principales
Actualización de Versiones
# Incrementar versión patch (0.1.0 → 0.1.1)
# Incrementar versión minor (0.1.0 → 0.2.0)
# Incrementar versión major (0.1.0 → 1.0.0)
Retroceso de Versiones
# Decrementar versión patch (0.1.1 → 0.1.0)
# Decrementar versión minor (0.2.0 → 0.1.0)
# Decrementar versión major (1.0.0 → 0.1.0)
Previsualización
# Ver la próxima versión sin aplicar cambios
# Output: Current version: 0.1.0
# Preview version (Increment): 0.2.0
Información
# Mostrar la versión actual del proyecto
# Output: 0.1.0
⚙️ Configuración
Archivo .vampus.yml
# Versión actual del proyecto
current_version: 1.2.3
# Archivos y patrones a actualizar
replaces:
# Cargo.toml para proyectos Rust
- file: Cargo.toml
pattern: ^version\s*=\s*"{{current_version}}"$
# package.json para proyectos Node.js
- file: package.json
pattern: "version"\s*:\s*"{{current_version}}"
# Archivos personalizados
- file: src/version.rs
pattern: pub const VERSION\s*:\s*&str\s*=\s*"{{current_version}}";
Patrones de Búsqueda
Los patrones utilizan expresiones regulares de Rust. El marcador {{current_version}} se reemplaza automáticamente por la versión actual/nueva.
Ejemplos de patrones comunes:
| Tipo de Archivo | Patrón de Ejemplo |
|---|---|
Cargo.toml |
^version\s*=\s*"{{current_version}}"$ |
package.json |
"version"\s*:\s*"{{current_version}}" |
Python setup.py |
version\s*=\s*["']{{current_version}}["'] |
| C/C++ Header | #define\s+VERSION\s+"{{current_version}}" |
🏗️ Arquitectura y Tecnologías
Stack Tecnológico
- Lenguaje: Rust 2024 Edition
- Runtime Asíncrono: Tokio para operaciones I/O no bloqueantes
- CLI Framework: Clap con derive macros
- Regex Engine: regex para patrones de búsqueda
- Serialización: Serde + serde_yaml para configuración
- Logging: tracing para observabilidad avanzada
Características de Rendimiento
- ⚡ Operaciones Asíncronas: Procesamiento paralelo de múltiples archivos
- 🧠 Gestión Inteligente de Memoria: Zero-copy string processing donde es posible
- 🔒 Seguridad de Tipos: Aprovecha el sistema de tipos de Rust para prevenir errores
- 🎯 Optimizaciones del Compilador: Compilación con
--releasepara máximo rendimiento
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Por favor, lee nuestras pautas de contribución antes de comenzar.
Desarrollo Local
# Clonar el repositorio
# Instalar dependencias de desarrollo
# Ejecutar tests
# Desarrollo con auto-reload
# Verificar formato y linting
Roadmap
- Soporte para más formatos de archivo (TOML, XML, etc.)
- Integración con sistemas de control de versiones (Git tags automáticos)
- Plugin system para extensibilidad
- Interfaz web opcional para equipos
- Soporte para monorepos
- Validación de dependencias semánticas
📄 Licencia
Este proyecto está licenciado bajo la MIT License - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Equipo de Rust por crear un lenguaje increíble
- Tokio por el runtime asíncrono
- Clap por el framework CLI
- Toda la comunidad de Rust por las bibliotecas de calidad
Documentación • Ejemplos • Reportar Bug • Solicitar Característica
Hecho con ❤️ y ☕ por la comunidad