Created
April 16, 2025 13:53
-
-
Save alextakitani/9a90464cb6169030e70eaf916ae4a473 to your computer and use it in GitHub Desktop.
Install and Update Windsurf Fedora 42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Script de instalação/atualização do Windsurf Editor (anteriormente Codeium) para Fedora | |
# Criado para uso com Fedora 42+ | |
# Versão: 1.0 | |
set -e | |
# Cores para mensagens | |
RED='\033[0;31m' | |
GREEN='\033[0;32m' | |
YELLOW='\033[1;33m' | |
NC='\033[0m' # No Color | |
msg() { echo -e "${GREEN}==> $1${NC}"; } | |
warn() { echo -e "${YELLOW}WARN: $1${NC}"; } | |
err() { echo -e "${RED}ERRO: $1${NC}"; exit 1; } | |
# Verifica se o script está sendo executado como root | |
if [ "$EUID" -ne 0 ]; then | |
err "Execute este script como root: sudo $0" | |
fi | |
# Verificar dependências | |
msg "Verificando dependências necessárias..." | |
for dep in curl dpkg gpg; do | |
if ! command -v $dep &> /dev/null; then | |
msg "Instalando $dep..." | |
dnf install -y $dep || err "Falha ao instalar $dep" | |
fi | |
done | |
# Criar diretório para configurações se não existir | |
mkdir -p /etc/apt/keyrings/ | |
# Adicionar/atualizar a chave GPG | |
msg "Adicionando chave GPG do repositório Windsurf..." | |
curl -fsSL "https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/windsurf.gpg" | \ | |
gpg --dearmor -o /etc/apt/keyrings/windsurf-stable-archive-keyring.gpg || \ | |
err "Falha ao adicionar chave GPG" | |
# Criar diretório temporário | |
TEMP_DIR=$(mktemp -d) | |
cd "$TEMP_DIR" | |
# Baixar informações do pacote mais recente | |
msg "Obtendo informações sobre a versão mais recente..." | |
if ! curl -s https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt/dists/stable/main/binary-amd64/Packages > Packages; then | |
err "Falha ao baixar informações do pacote" | |
fi | |
# Extrair informações do pacote | |
PACKAGE_URL=$(grep -A 20 "Package: windsurf" Packages | grep "Filename:" | head -1 | awk '{print $2}') | |
VERSION=$(grep -A 20 "Package: windsurf" Packages | grep "Version:" | head -1 | awk '{print $2}') | |
if [ -z "$PACKAGE_URL" ] || [ -z "$VERSION" ]; then | |
err "Erro: Não foi possível encontrar informações sobre o pacote Windsurf" | |
fi | |
# Verificar se já está instalado e na versão atual | |
INSTALLED_VERSION="" | |
if [ -f "/opt/windsurf/version" ]; then | |
INSTALLED_VERSION=$(cat /opt/windsurf/version) | |
fi | |
if [ -n "$INSTALLED_VERSION" ] && [ "$INSTALLED_VERSION" == "$VERSION" ]; then | |
msg "Windsurf Editor versão $VERSION já está instalado (atualizado)" | |
cd / && rm -rf "$TEMP_DIR" | |
exit 0 | |
fi | |
if [ -n "$INSTALLED_VERSION" ]; then | |
msg "Atualizando Windsurf Editor de $INSTALLED_VERSION para $VERSION..." | |
else | |
msg "Instalando Windsurf Editor versão $VERSION..." | |
fi | |
# Baixar o pacote .deb | |
FULL_URL="https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt/$PACKAGE_URL" | |
DEB_FILE="${PACKAGE_URL##*/}" | |
msg "Baixando $FULL_URL..." | |
if ! curl -fsSL "$FULL_URL" -o "$DEB_FILE"; then | |
err "Falha ao baixar o pacote Windsurf" | |
fi | |
# Extrair o pacote .deb | |
msg "Extraindo o pacote..." | |
mkdir -p windsurf-extract | |
dpkg-deb -x "$DEB_FILE" windsurf-extract || err "Falha ao extrair o pacote" | |
# Parar o Windsurf se estiver rodando | |
if pgrep -f windsurf &>/dev/null; then | |
msg "Parando instância do Windsurf em execução..." | |
pkill -f windsurf || true | |
sleep 1 | |
fi | |
# Instalar/atualizar o programa | |
msg "Instalando arquivos..." | |
mkdir -p /opt/windsurf | |
rm -rf /opt/windsurf/* # Limpar instalação anterior | |
cp -r windsurf-extract/usr/share/windsurf/* /opt/windsurf/ || err "Falha ao copiar arquivos" | |
# Salvar a versão | |
echo "$VERSION" > /opt/windsurf/version | |
# Criar links simbólicos | |
msg "Configurando links simbólicos..." | |
ln -sf /opt/windsurf/windsurf /usr/local/bin/windsurf | |
# Copiar o arquivo .desktop para integração com o sistema | |
msg "Configurando integração com o desktop..." | |
mkdir -p /usr/share/applications/ | |
cp windsurf-extract/usr/share/applications/windsurf.desktop /usr/share/applications/ || warn "Falha ao copiar arquivo .desktop" | |
# Configurar permissões | |
msg "Configurando permissões..." | |
chmod 755 /opt/windsurf/windsurf | |
chmod 755 /usr/local/bin/windsurf | |
# Limpar | |
cd / && rm -rf "$TEMP_DIR" | |
msg "Windsurf Editor versão $VERSION instalado com sucesso!" | |
msg "Execute 'windsurf' no terminal ou procure 'Windsurf' no menu de aplicativos." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment