Files
STP/modules/vscodium.sh
T
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

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"