Auto-commit

This commit is contained in:
2025-08-17 00:31:28 -03:00
parent f05e3d20c5
commit b2b35f41eb
3 changed files with 275 additions and 201 deletions

160
README.md
View File

@ -1,99 +1,123 @@
# 🚀 git-subir
# 🧠 git-subir — Instalador autosuficiente para subir cambios vía Git con autenticación segura
Script CLI para automatizar el push de cambios a repositorios Gitea con autenticación segura, configuración automática de remotos, commits interactivos, recuperación ante errores y cifrado opcional de credenciales.
Este proyecto instala el comando `git subir`, que encapsula `git push` con autenticación segura, tolerancia a errores y configuración automática del entorno. Está diseñado para entornos reales, con portabilidad, robustez y experiencia de usuario optimizada.
---
## 📦 Archivos incluidos
## ✅ Funcionalidades incluidas
| Archivo | Descripción |
|------------------------|-----------------------------------------------------------------------------|
| `instalar-subir.sh` | Instalador interactivo que configura credenciales, instala el comando global `git-subir` y valida entorno. |
| `git-subir` | Script principal que automatiza el flujo de push, commits, configuración de remotos y recuperación ante errores. |
| `desinstalar-subir.sh` | Elimina el binario instalado y la configuración/credenciales guardadas. |
| Funcionalidad | Estado |
|---------------|--------|
| Solicitud y validación de credenciales | ✅ |
| Cifrado con OpenSSL (AES-256-CBC + PBKDF2) | ✅ |
| Cambio de contraseña de cifrado (`--cambiar-clave`) | ✅ |
| Reconfiguración completa (`--reconfigurar`) | ✅ |
| Generación automática del script `git-subir` | ✅ |
| Instalación en `~/.local/bin` | ✅ |
| Alias `git subir` vía `git config --global` | ✅ |
| Verificación y corrección de `$PATH` | ✅ |
| Inicialización de repositorio si no existe | ✅ |
| Configuración automática de upstream | ✅ |
| Mensajes claros y tolerancia a errores | ✅ |
---
## 🔧 Requisitos
## 📦 Requisitos
- Bash 4+
- Git instalado y configurado
- `curl`, `jq`, `openssl` disponibles en el sistema
- Acceso a un servidor Gitea con token o usuario/contraseña válidos
- Carpeta `~/.local/bin` incluida en el `$PATH`
- Git instalado y accesible desde la terminal
- `curl` para validación de credenciales vía API
- `openssl` para cifrado seguro (AES-256-CBC + PBKDF2)
- Shell compatible (`bash` o `zsh`)
- Acceso a la API de Gitea (o compatible con GitHub/GitLab si se adapta el endpoint)
---
## 🧪 Instalación
## 🚀 Instalación
```bash
chmod +x instalar-subir.sh
./instalar-subir.sh
1. Cloná el repositorio o descargá el script `instalar-subir.sh`
2. Ejecutá el instalador:
Durante la instalación se te pedirá:
```bash
chmod +x instalar-subir.sh
./instalar-subir.sh
URL base del servidor Gitea (ej: https://gitea.midominio.com)
Usuario y contraseña o token
# 🧠 git-subir — Instalador autosuficiente para subir cambios vía Git con autenticación segura
Si querés cifrar las credenciales (usando AES-256-CBC con PBKDF2)
Este proyecto instala el comando `git subir`, que encapsula `git push` con autenticación segura, tolerancia a errores y configuración automática del entorno. Está diseñado para entornos reales, con portabilidad, robustez y experiencia de usuario optimizada.
Confirmación para instalar git-subir como comando global
---
El script valida las credenciales contra la API de Gitea antes de continuar.
## ✅ Funcionalidades incluidas
🚀 Uso
Una vez instalado, podés usar git-subir desde cualquier repositorio git:
| Funcionalidad | Estado |
|---------------|--------|
| Solicitud y validación de credenciales | ✅ |
| Cifrado con OpenSSL (AES-256-CBC + PBKDF2) | ✅ |
| Cambio de contraseña de cifrado (`--cambiar-clave`) | ✅ |
| Reconfiguración completa (`--reconfigurar`) | ✅ |
| Generación automática del script `git-subir` | ✅ |
| Instalación en `~/.local/bin` | ✅ |
| Alias `git subir` vía `git config --global` | ✅ |
| Verificación y corrección de `$PATH` | ✅ |
| Inicialización de repositorio si no existe | ✅ |
| Configuración automática de upstream | ✅ |
| Mensajes claros y tolerancia a errores | ✅ |
---
## 📦 Requisitos
- Git instalado y accesible desde la terminal
- `curl` para validación de credenciales vía API
- `openssl` para cifrado seguro (AES-256-CBC + PBKDF2)
- Shell compatible (`bash` o `zsh`)
- Acceso a la API de Gitea (o compatible con GitHub/GitLab si se adapta el endpoint)
---
## 🚀 Instalación
1. Cloná el repositorio o descargá el script `instalar-subir.sh`
2. Ejecutá el instalador:
```bash
chmod +x instalar-subir.sh
./instalar-subir.sh
source ~/.bashrc # o ~/.zshrc según tu shell
Uso
bash
git subir
Sube los cambios al remoto configurado, validando credenciales y configurando upstream si es necesario.
Opciones avanzadas
bash
git subir --reconfigurar
🔄 Permite cambiar usuario, token, URL y contraseña de cifrado.
bash
git-subir
El script realiza:
Carga y descifrado de credenciales (si están cifradas)
Verificación de cambios sin commitear
Commit automático si lo autorizás
Verificación de configuración del remote origin
Push al repositorio remoto
Si el push falla, intenta git pull --rebase y reintenta
🔁 Reconfigurar credenciales
Podés ejecutar:
bash
git-subir --reconfigurar
Esto permite:
Cambiar usuario/contraseña o token
Elegir si querés cifrar o guardar en texto plano
Validar nuevamente contra la API
Reescribir la configuración en ~/.config/git-subir/
git subir --cambiar-clave
🔐 Cambia solo la contraseña de cifrado sin tocar usuario/token.
🔐 Seguridad
Cifrado con openssl usando AES-256-CBC y derivación PBKDF2
Las credenciales se cifran con AES-256-CBC + PBKDF2 usando OpenSSL
La contraseña de cifrado nunca se guarda
El archivo de configuración se guarda en ~/.config/git-subir.conf
Los archivos se almacenan en ~/.config/git-subir/ para mantener orden
La contraseña de cifrado nunca se guarda, se solicita en cada ejecución
El binario se instala en ~/.local/bin/git-subir para uso global
El script tolera errores de autenticación, PATH, upstream y configuración
📁 Desinstalación
Si querés eliminar todo:
🧹 Desinstalación
bash
chmod +x desinstalar-subir.sh
./desinstalar-subir.sh
Esto elimina:
rm ~/.local/bin/git-subir
git config --global --unset alias.subir
rm ~/.config/git-subir.conf
🧪 Estado del proyecto
Listo para producción. Validado en entornos bash, zsh, root, y con múltiples configuraciones de Git. Diseñado para ser portable, seguro y fácil de mantener.
El binario git-subir de ~/.local/bin
Las credenciales y configuración de ~/.config/git-subir
🧠 Autor
Nahuel Baglietto