Karibu CLI (kli) es una herramienta de línea de comandos diseñada para ayudar a los desarrolladores con tareas comunes como la gestión de versiones semánticas y la creación de proyectos a partir de plantillas.
# Clonar el repositorio
git clone https://github.com/KaribuLab/kli.git
# Entrar al directorio
cd kli
# Compilar
go build -o bin/kli ./*.go
# Opcional: Mover el binario a un directorio en el PATH
sudo mv bin/kli /usr/local/bin/El comando semver analiza los mensajes de commit y genera una versión semántica basada en el Versionado Semántico.
kli semverEste comando analizará el historial de commits y generará una versión semántica siguiendo las reglas:
- Commits con
fix:incrementan el número de parche (0.0.X) - Commits con
feat:incrementan el número menor (0.X.0) - Commits con
!oBREAKING CHANGEincrementan el número mayor (X.0.0)
kli semver [flags]
Flags:
-d, --dryrun Ejecutar sin crear tags reales
-p, --pattern string Patrón a utilizar para el tag (default "v{major}.{minor}.{patch}")
-r, --remove Eliminar tags
-t, --tags Crear todos los tags si no están presentes
-v, --verbose Salida detalladaGenerar la versión actual basada en los commits:
kli semver
# Salida: v0.1.2Crear tags automáticamente:
kli semver -t
# Crea los tags necesarios en Git y los muestraModo detallado:
kli semver -v
# Muestra información detallada sobre los commits analizadosUsar un patrón personalizado:
kli semver -p "version-{major}.{minor}.{patch}"
# Salida: version-0.1.2El comando project permite crear nuevos proyectos basados en plantillas alojadas en repositorios Git.
El sistema utiliza el motor de plantillas (templates) de Go para procesar los archivos de la plantilla y generar el código personalizado. Esto te permite crear estructuras de proyecto dinámicas basadas en los inputs proporcionados por el usuario.
kli project <URL-del-repositorio>Este comando clonará el repositorio especificado y aplicará transformaciones según la configuración en el archivo .kliproject.json.
kli project [URL-del-repositorio] [flags]
Flags:
-b, --branch string Rama a clonar (default "main")
-w, --workdir string Directorio de trabajo (default ".")Crear un nuevo proyecto basado en una plantilla:
kli project https://github.com/usuario/plantilla-react
# Solicitará inputs según se definan en .kliproject.json
# Por ejemplo:
# > Nombre del proyecto:
# > Descripción del proyecto:
# > Autor:Especificar una rama diferente:
kli project https://github.com/usuario/plantilla-node -b desarrolloEspecificar un directorio de trabajo:
kli project https://github.com/usuario/plantilla-go -w mi-proyecto-nuevoPara crear tus propias plantillas de proyecto, debes incluir un archivo .kliproject.json en la raíz del repositorio:
{
"prompts": [
{
"name": "projectName",
"description": "Nombre del proyecto:",
"type": "string"
}
],
"templates": [
{
"rootDir": "templates",
"delete": true,
"files": [
{
"source": "templates/README.md.tmpl",
"destination": "README.md"
}
]
}
],
"posthooks": [
{
"name": "Instalar dependencias",
"command": "npm install"
}
]
}El comando project utiliza el paquete text/template de Go para procesar las plantillas. Puedes utilizar esta sintaxis en tus archivos de plantilla:
# Proyecto: {{.Inputs.projectName}}
## Descripción
{{.Inputs.description}}
## Autor
{{.Inputs.author}}
Además de las variables directas, el sistema ofrece las siguientes funciones de transformación:
{{toLowerCase "MiTexto"}}- Convierte el texto a minúsculas{{toUpperCase "MiTexto"}}- Convierte el texto a mayúsculas{{toPascalCase "mi-texto"}}- Convierte a formato PascalCase (MiTexto){{toCamelCase "mi-texto"}}- Convierte a formato camelCase (miTexto)
Las contribuciones son bienvenidas. Por favor, envía un pull request o abre un issue para discutir los cambios propuestos.