#!/usr/bin/env bash # Captura el perfil de Firefox (Snap): marcadores, historial, contraseñas, # extensiones, cookies, contenedores y preferencias de todos los perfiles. # Excluye cachés, almacenamiento de sitios, crash reports y telemetría. set -euo pipefail stpRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" source "$stpRoot/lib/log.sh" readonly firefoxCommonDirectory="$HOME/snap/firefox/common" readonly firefoxProfilesDirectory="$firefoxCommonDirectory/.mozilla/firefox" readonly outputFile="$stpRoot/secrets/firefoxProfile.zip" firefoxDataExists() { [[ -f "$firefoxProfilesDirectory/profiles.ini" ]] } if ! firefoxDataExists; then log::warn "Datos de Firefox Snap no encontrados en: $firefoxProfilesDirectory" log::info "Asegurate de haber abierto Firefox al menos una vez antes de capturar" exit 0 fi log::step "Capturando perfil de Firefox" log::info "Cerrá Firefox antes de capturar para evitar bases de datos a medio escribir" mkdir -p "$stpRoot/secrets" rm -f "$outputFile" ( cd "$firefoxCommonDirectory" find ".mozilla/firefox" \ | grep -Ev "/(cache2|startupCache|OfflineCache|thumbnails|shader-cache|jumpListCache|storage|minidumps|crashes|datareporting|saved-telemetry-pings|security_state|gmp-widevinecdm|gmp-gmpopenh264)(/|$)" \ | grep -Ev "/(Crash Reports|Pending Pings)(/|$)" \ | grep -Ev "\.(sqlite-wal|sqlite-shm)$" \ | grep -Ev "/(lock|\.parentlock)$" \ | zip -q "$outputFile" -@ ) log::ok "Guardado: secrets/firefoxProfile.zip ($(du -sh "$outputFile" | cut -f1))" log::info "Commiteá secrets/firefoxProfile.zip antes de hacer push"