Files
msaldain 8507f087ba Agregar respaldo y restauracion de Firefox y VSCodium nativo
Firefox: captura del perfil snap (marcadores, contrasenas, extensiones,
cookies, contenedores, prefs; excluye caches y storage de sitios) y modulo
de restauracion idempotente.

VSCodium: pasa a instalacion nativa via repo apt oficial (clave GPG +
sources) en lugar de flatpak; captura settings, snippets, perfiles, estado
de workspaces y lista de extensiones (excluye cache de redhat.java).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 17:43:25 -03:00

65 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Captura la configuración de VSCodium (instalación nativa, ~/.config/VSCodium):
# settings, keybindings, snippets, perfiles, la lista de extensiones y el
# estado de los workspaces (mapeo carpeta↔workspace + estado de UI).
# Excluye la caché regenerable de las extensiones (p. ej. redhat.java/jdt_ws).
set -euo pipefail
stpRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
source "$stpRoot/lib/log.sh"
source "$stpRoot/lib/utils.sh"
readonly vscodiumConfigDirectory="$HOME/.config/VSCodium"
readonly vscodiumUserDirectory="$vscodiumConfigDirectory/User"
readonly outputFile="$stpRoot/secrets/vscodiumConfig.zip"
vscodiumDataExists() {
[[ -d "$vscodiumUserDirectory" ]]
}
listConfigFiles() {
local configFile
for configFile in settings.json keybindings.json tasks.json argv.json; do
[[ -f "User/$configFile" ]] && echo "User/$configFile"
done
find "User/snippets" "User/profiles" -type f 2>/dev/null
# De cada workspace solo interesa el mapeo a la carpeta y el estado de UI;
# el resto son cachés de extensiones que se regeneran solas.
find "User/workspaceStorage" -type f \
\( -name workspace.json -o -name 'state.vscdb' -o -name 'state.vscdb.backup' \) 2>/dev/null
# Estado global: lista de workspaces recientes y asociaciones de perfil.
find "User/globalStorage" -maxdepth 1 -type f \
\( -name 'state.vscdb' -o -name 'storage.json' \) 2>/dev/null
}
if ! vscodiumDataExists; then
log::warn "Datos de VSCodium no encontrados en: $vscodiumUserDirectory"
log::info "Asegurate de haber abierto VSCodium al menos una vez antes de capturar"
exit 0
fi
log::step "Capturando configuración de VSCodium"
mkdir -p "$stpRoot/secrets"
rm -f "$outputFile"
(
cd "$vscodiumConfigDirectory"
listConfigFiles | zip -q "$outputFile" -@
)
if util::cmdExists codium; then
workingDirectory="$(mktemp -d)"
trap 'rm -rf "$workingDirectory"' EXIT
codium --list-extensions > "$workingDirectory/extensions.txt"
# -j descarta la ruta: el archivo queda como extensions.txt en la raíz del zip.
zip -qj "$outputFile" "$workingDirectory/extensions.txt"
log::ok "Lista de extensiones incluida en el respaldo ($(wc -l < "$workingDirectory/extensions.txt") extensiones)"
else
log::warn "Comando 'codium' no disponible: no se guardó la lista de extensiones"
fi
log::ok "Guardado: secrets/vscodiumConfig.zip ($(du -sh "$outputFile" | cut -f1))"
log::info "Commiteá secrets/vscodiumConfig.zip antes de hacer push"