#!/bin/sh # Revela para escritorio · Revela for desktop — https://revelaslides.com/download # # curl -fsSL https://revelaslides.com/install.sh | sh # # macOS: la última versión en Aplicaciones (en ~/Applications si no se puede escribir en /Applications). # Debian y Ubuntu: el repositorio apt de Revela, firmado (se actualiza con el sistema: sudo apt upgrade). # Otros Linux: la AppImage en ~/.local/bin, con su entrada en el menú (se actualiza sola). # Todo sale de las versiones publicadas en https://github.com/fmesasc/revela/releases — nada más. set -eu REPO="fmesasc/revela" LATEST="https://github.com/$REPO/releases/latest/download" API="https://api.github.com/repos/$REPO/releases/latest" say() { printf '%s\n' "$*"; } fail() { say "✗ No se pudo instalar Revela · Revela couldn't be installed: $*" >&2; exit 1; } command -v curl >/dev/null 2>&1 || fail "falta curl · curl is missing" # The address of the latest version's file whose name ends like that. asset() { curl -fsSL -H 'User-Agent: revela-install' "$API" | grep -o "\"browser_download_url\": *\"[^\"]*$1\"" | head -n 1 | sed 's/.*"\(https[^"]*\)"$/\1/'; } case "$(uname -s)" in Darwin) url=$(asset '\.dmg'); [ -n "$url" ] || fail "no está el instalador para macOS · no macOS installer found" tmp=$(mktemp -d) trap 'hdiutil detach "$tmp/disk" -quiet >/dev/null 2>&1 || true; rm -rf "$tmp"' EXIT say "↓ Revela para macOS · Revela for macOS…" curl -fL --progress-bar -o "$tmp/Revela.dmg" "$url" mkdir "$tmp/disk" hdiutil attach "$tmp/Revela.dmg" -nobrowse -quiet -mountpoint "$tmp/disk" dest="/Applications"; [ -w "$dest" ] || dest="$HOME/Applications" mkdir -p "$dest"; rm -rf "$dest/Revela.app"; cp -R "$tmp/disk/Revela.app" "$dest/" # (The app isn't signed with an Apple certificate: without this, macOS says it can't be opened.) xattr -dr com.apple.quarantine "$dest/Revela.app" 2>/dev/null || true say "✓ Revela está en $dest y se actualiza sola · Revela is in $dest and updates itself." open "$dest/Revela.app" ;; Linux) case "$(uname -m)" in x86_64|amd64) arch="amd64" ;; aarch64|arm64) arch="aarch64" ;; *) fail "solo hay versión para 64 bits (x86_64 o ARM64) · only x86_64 and ARM64 builds" ;; esac if command -v apt-get >/dev/null 2>&1 && command -v sudo >/dev/null 2>&1; then say "↓ Revela con apt (pide tu contraseña) · Revela through apt (asks for your password)…" sudo curl -fsSLo /usr/share/keyrings/revela.asc "$LATEST/revela.asc" echo "deb [signed-by=/usr/share/keyrings/revela.asc] $LATEST ./" | sudo tee /etc/apt/sources.list.d/revela.list >/dev/null sudo apt-get update -qq sudo apt-get install -y revela say "✓ Revela instalada; se actualiza con el sistema · Revela installed; it updates with the system (sudo apt upgrade)." else url=$(asset "_${arch}\\.AppImage"); [ -n "$url" ] || fail "no está la AppImage para este procesador · no AppImage for this processor" bin="$HOME/.local/bin"; apps="$HOME/.local/share/applications" mkdir -p "$bin" "$apps" say "↓ Revela (AppImage)…" curl -fL --progress-bar -o "$bin/Revela.AppImage" "$url" chmod +x "$bin/Revela.AppImage" cat > "$apps/revela.desktop" </dev/null 2>&1 && update-desktop-database "$apps" >/dev/null 2>&1 || true say "✓ Revela está en $bin/Revela.AppImage y se actualiza sola · and updates itself." fi ;; *) fail "en Windows, usa PowerShell: irm https://revelaslides.com/install.ps1 | iex · on Windows, use PowerShell" ;; esac