8507f087ba
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>
96 lines
2.8 KiB
Bash
Executable File
96 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
source "$stpRoot/lib/log.sh"
|
|
source "$stpRoot/lib/utils.sh"
|
|
|
|
readonly vscodiumKeyring="/etc/apt/keyrings/vscodium.asc"
|
|
readonly vscodiumSources="/etc/apt/sources.list.d/vscodium.list"
|
|
readonly vscodiumSourcesEntry="deb [signed-by=${vscodiumKeyring}] https://download.vscodium.com/debs vscodium main"
|
|
|
|
readonly vscodiumConfigDirectory="$HOME/.config/VSCodium"
|
|
readonly vscodiumUserDirectory="$vscodiumConfigDirectory/User"
|
|
readonly vscodiumArchive="$stpRoot/secrets/vscodiumConfig.zip"
|
|
|
|
vscodiumIsInstalled() {
|
|
util::cmdExists codium
|
|
}
|
|
|
|
repoIsConfigured() {
|
|
[[ -f "$vscodiumSources" ]]
|
|
}
|
|
|
|
addSigningKey() {
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
sudo install -m 644 "$stpRoot/config/keys/vscodium.asc" "$vscodiumKeyring"
|
|
log::ok "Clave GPG instalada: $vscodiumKeyring"
|
|
}
|
|
|
|
addRepository() {
|
|
echo "$vscodiumSourcesEntry" | sudo tee "$vscodiumSources" > /dev/null
|
|
sudo apt-get update -qq
|
|
log::ok "Repositorio configurado: $vscodiumSources"
|
|
}
|
|
|
|
vscodiumConfigExists() {
|
|
[[ -f "$vscodiumUserDirectory/settings.json" ]]
|
|
}
|
|
|
|
restoreUserConfig() {
|
|
local extractedDirectory="$1"
|
|
mkdir -p "$vscodiumConfigDirectory"
|
|
cp -r "$extractedDirectory/User" "$vscodiumConfigDirectory/"
|
|
log::ok "Configuración restaurada en: $vscodiumUserDirectory"
|
|
}
|
|
|
|
installExtensions() {
|
|
local extensionsFile="$1"
|
|
if [[ ! -f "$extensionsFile" ]]; then
|
|
log::info "Sin lista de extensiones en el respaldo, salteando"
|
|
return 0
|
|
fi
|
|
|
|
local extensionId installedCount=0
|
|
while IFS= read -r extensionId; do
|
|
[[ -n "$extensionId" ]] || continue
|
|
if codium --install-extension "$extensionId" &>/dev/null; then
|
|
log::ok "Extensión instalada: $extensionId"
|
|
((++installedCount))
|
|
else
|
|
log::warn "No se pudo instalar: $extensionId"
|
|
fi
|
|
done < "$extensionsFile"
|
|
|
|
log::ok "$installedCount extensión(es) instaladas"
|
|
}
|
|
|
|
if vscodiumIsInstalled; then
|
|
log::info "VSCodium ya instalado: $(codium --version | head -1)"
|
|
else
|
|
log::info "Instalando VSCodium (nativo)..."
|
|
util::requireSudo
|
|
if ! repoIsConfigured; then
|
|
addSigningKey
|
|
addRepository
|
|
fi
|
|
sudo apt-get install -y codium
|
|
log::ok "Instalado: codium"
|
|
fi
|
|
|
|
if [[ ! -f "$vscodiumArchive" ]]; then
|
|
log::info "Sin respaldo de configuración (secrets/vscodiumConfig.zip), salteando restauración"
|
|
exit 0
|
|
fi
|
|
|
|
if vscodiumConfigExists; then
|
|
log::info "Configuración de VSCodium ya existe, salteando restauración"
|
|
exit 0
|
|
fi
|
|
|
|
log::step "Restaurando configuración de VSCodium"
|
|
extractedDirectory="$(mktemp -d)"
|
|
trap 'rm -rf "$extractedDirectory"' EXIT
|
|
|
|
unzip -qo "$vscodiumArchive" -d "$extractedDirectory"
|
|
restoreUserConfig "$extractedDirectory"
|
|
installExtensions "$extractedDirectory/extensions.txt"
|