Este repositorio contiene una colección de utilidades para convertir entre variables de entorno y formato JSON, facilitando la gestión de configuraciones en diferentes entornos.
- e2j.sh - Script Bash para convertir variables de entorno a JSON
- j2e.sh - Script Bash para convertir JSON a variables de entorno
- envjson.py - Módulo Python para conversiones bidireccionales con soporte para snapshots
- Para los scripts Bash:
- Bash 4+
- El script
j2e.shrequiere jq
- Para el módulo Python:
- Python 3.6+
Clona este repositorio o descarga los archivos individuales:
git clone https://github.com/tuusuario/envjson-utilities.git
cd envjson-utilities
chmod +x e2j.sh j2e.sh envjson.pyConvierte variables de entorno a formato JSON.
./e2j.sh [-g patron]-g patron: Solo incluye variables que coincidan con el patrón (expresión regular)-h: Muestra ayuda
# Convertir todas las variables de entorno a JSON
./e2j.sh > variables.json
# Convertir solo variables que contengan PATH
./e2j.sh -g PATH > path_variables.json
# Convertir variables que empiecen con USER o HOME
./e2j.sh -g "^(USER|HOME)" > user_variables.json
# Combinar con jq para filtrar y formatear el resultado
./e2j.sh | jq '.PATH, .HOME'Convierte un archivo JSON a variables de entorno.
cat archivo.json | ./j2e.sh [-f archivo_salida]-f archivo: Añade las variables al final del archivo especificado-h: Muestra ayuda
# Cargar variables en el entorno actual
cat config.json | ./j2e.sh
# Añadir variables al final de .zshrc
cat config.json | ./j2e.sh -f ~/.zshrc
# Convertir y guardar en un script para uso posterior
cat config.json | ./j2e.sh -f variables.sh
# Utilizar con redirección
./j2e.sh -f ~/.bashrc < config.jsonMódulo Python para convertir entre variables de entorno y JSON, con soporte para snapshots de variables internas de módulos.
python envjson.py {e2j|j2e} [opciones]e2j: Convierte de entorno a JSONj2e: Convierte de JSON a entorno-i, --input ARCHIVO: Archivo JSON de entrada (solo para j2e)-o, --output ARCHIVO: Archivo de salida-g, --pattern PATRON: Patrón para filtrar variables (solo para e2j)
# Convertir variables de entorno a JSON
python envjson.py e2j -o variables.json
# Filtrar variables por patrón
python envjson.py e2j -g "^PYTHON" -o python_vars.json
# Convertir JSON a variables de entorno en un archivo shell
python envjson.py j2e -i config.json -o variables.shimport envjson
# Convertir variables de entorno a JSON
variables = envjson.convert('e2j', output_file='config.json')
# Convertir JSON a variables de entorno
variables = envjson.convert('j2e', input_file='config.json', output_file='variables.sh')
# Usar modo snapshot para guardar variables del módulo actual
local_vars = locals()
envjson.convert('e2j', output_file='snapshot.json', snapshot_mode=True, snapshot_vars=local_vars)
# Cargar snapshot en otro módulo
globals_dict = globals()
envjson.convert('j2e', input_file='snapshot.json', snapshot_mode=True, snapshot_vars=globals_dict)El modo snapshot permite guardar el estado de las variables de un módulo Python:
# Guardar todas las variables locales
import envjson
def mi_funcion():
x = 10
y = "Hello"
z = [1, 2, 3]
# Guardar estado actual
envjson.convert('e2j', output_file='snapshot.json',
snapshot_mode=True, snapshot_vars=locals())
mi_funcion()Exportar configuración de un sistema:
# En servidor1
./e2j.sh -g "APP_" > app_config.jsonImportar en otro sistema:
# En servidor2
cat app_config.json | ./j2e.sh -f ~/.profile
source ~/.profile# Desde el host
docker exec mi_contenedor /bin/bash -c "export -p | ./e2j.sh" > container_env.jsonSe aceptan contribuciones a través de Pull Requests. Para cambios mayores, primero abra un Issue para discutir el cambio propuesto.
Este proyecto está licenciado bajo una licencia de código abierto - ver el archivo LICENSE para más detalles.
Licencia abierta: Todo el mundo puede modificar y distribuir este software, pero deben mantener la atribución al autor original en todas las copias o trabajos derivados.
Tu Nombre
- Comunidad de Bash y Python
- Equipo de jq por su excelente herramienta para procesamiento de JSON