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>
This commit is contained in:
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
source "$stpRoot/lib/log.sh"
|
||||
source "$stpRoot/lib/utils.sh"
|
||||
|
||||
readonly firefoxCommonDirectory="$HOME/snap/firefox/common"
|
||||
readonly firefoxProfilesDirectory="$firefoxCommonDirectory/.mozilla/firefox"
|
||||
readonly firefoxArchive="$stpRoot/secrets/firefoxProfile.zip"
|
||||
|
||||
firefoxIsInstalled() {
|
||||
util::isSnapInstalled "firefox"
|
||||
}
|
||||
|
||||
firefoxProfileExists() {
|
||||
[[ -f "$firefoxProfilesDirectory/profiles.ini" ]]
|
||||
}
|
||||
|
||||
installFirefox() {
|
||||
sudo snap install firefox
|
||||
log::ok "Firefox instalado"
|
||||
}
|
||||
|
||||
restoreProfile() {
|
||||
log::info "Restaurando perfil desde secrets/firefoxProfile.zip..."
|
||||
mkdir -p "$firefoxCommonDirectory"
|
||||
unzip -qo "$firefoxArchive" -d "$firefoxCommonDirectory"
|
||||
log::ok "Perfil restaurado en: $firefoxProfilesDirectory"
|
||||
}
|
||||
|
||||
if firefoxIsInstalled; then
|
||||
log::info "Firefox ya instalado"
|
||||
else
|
||||
installFirefox
|
||||
fi
|
||||
|
||||
if [[ ! -f "$firefoxArchive" ]]; then
|
||||
log::info "Sin respaldo de perfil (secrets/firefoxProfile.zip), salteando restauración"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if firefoxProfileExists; then
|
||||
log::info "Perfil de Firefox ya existe, salteando restauración"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
restoreProfile
|
||||
Executable
+95
@@ -0,0 +1,95 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user