vampus 0.4.5

A CLI tool for automated semantic version management across configurable file patterns.
vampus-0.4.5 is not a library.

🧛‍♂️ Vampus

Crates.io License Rust Build Status Coverage

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 downgrade para revertir versiones de manera segura
  • 👁️ Previsualización: Comando preview para validar cambios antes de aplicarlos
  • 🎯 Multi-archivo: Actualiza versiones consistentemente en múltiples archivos de configuración
  • ⚙️ Configuración Flexible: Archivo .vampus.yml para 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)

cargo install vampus

Desde el Código Fuente

# Clonar el repositorio
git clone https://github.com/yourusername/vampus.git
cd vampus

# Compilar e instalar
cargo install --path .

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
vampus init

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)
vampus upgrade --patch

# Incrementar versión minor (0.1.0 → 0.2.0)
vampus upgrade --minor

# Incrementar versión major (0.1.0 → 1.0.0)
vampus upgrade --major

Retroceso de Versiones

# Decrementar versión patch (0.1.1 → 0.1.0)
vampus downgrade --patch

# Decrementar versión minor (0.2.0 → 0.1.0)
vampus downgrade --minor

# Decrementar versión major (1.0.0 → 0.1.0)
vampus downgrade --major

Previsualización

# Ver la próxima versión sin aplicar cambios
vampus preview --minor
# Output: Current version: 0.1.0
#         Preview version (Increment): 0.2.0

Información

# Mostrar la versión actual del proyecto
vampus show
# 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 --release para máximo rendimiento

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Por favor, lee nuestras pautas de contribución antes de comenzar.

Desarrollo Local

# Clonar el repositorio
git clone https://github.com/yourusername/vampus.git
cd vampus

# Instalar dependencias de desarrollo
cargo install cargo-watch

# Ejecutar tests
cargo test

# Desarrollo con auto-reload
cargo watch -x run

# Verificar formato y linting
cargo fmt --all -- --check
cargo clippy -- -D warnings

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ónEjemplosReportar BugSolicitar Característica

Hecho con ❤️ y ☕ por la comunidad