#!/usr/bin/env bash # Instala (ou atualiza) o Copiado a partir do pacote publicado no Gitea. # O repositório é público: não precisa de token. GITEA_TOKEN é opcional (útil num # fork privado ou para fugir do limite de requisições anônimas). set -e SERVIDOR="https://git.lucasrguerra.dev.br" API="$SERVIDOR/api/v1/repos/lucasrguerra/copiado" TMP=$(mktemp -d) trap 'rm -rf "$TMP"' EXIT # O token (se houver) vai por um arquivo de configuração do curl, não pela linha de # comando, para não aparecer na lista de processos. : > "$TMP/curlrc" [ -z "${GITEA_TOKEN:-}" ] || printf 'header = "Authorization: token %s"\n' "$GITEA_TOKEN" > "$TMP/curlrc" baixar() { curl -fsSL --proto '=https' --tlsv1.2 -K "$TMP/curlrc" -o "$2" "$1"; } echo "==> Procurando a versão mais recente..." baixar "$API/releases/latest" "$TMP/release.json" url_do_arquivo() { python3 -c 'import json,sys; print(next(a["browser_download_url"] for a in json.load(open(sys.argv[1]))["assets"] if a["name"] == sys.argv[2]))' "$TMP/release.json" "$1" } echo "==> Baixando..." baixar "$(url_do_arquivo copiado_all.deb)" "$TMP/copiado_all.deb" baixar "$(url_do_arquivo SHA256SUMS)" "$TMP/SHA256SUMS" echo "==> Conferindo a integridade do pacote..." (cd "$TMP" && sha256sum --check --strict --quiet SHA256SUMS) || { echo "ERRO: o pacote baixado não confere com o checksum publicado. Instalação cancelada." exit 1 } chmod 644 "$TMP/copiado_all.deb" echo "==> Instalando o pacote..." sudo apt-get update -qq || echo " (aviso: algum repositório falhou no update, seguindo mesmo assim)" sudo apt-get install -y "$TMP/copiado_all.deb" # remove instalações antigas feitas sem pacote (o histórico é mantido) pkill -f "share/copiado/copiado.py" 2>/dev/null || true pkill -f "share/clipboard-winv/clipboard-winv.py" 2>/dev/null || true rm -f "$HOME/.local/share/copiado/copiado.py" \ "$HOME/.config/autostart/copiado.desktop" \ "$HOME/.config/autostart/clipboard-winv.desktop" if [ -f "$HOME/.local/share/clipboard-winv/historico.json" ]; then mkdir -p "$HOME/.local/share/copiado" cp -a "$HOME/.local/share/clipboard-winv"/. "$HOME/.local/share/copiado"/ sed -i "s#/clipboard-winv/#/copiado/#g" "$HOME/.local/share/copiado/historico.json" rm -rf "$HOME/.local/share/clipboard-winv" fi echo "==> Criando atalho Win+V e iniciando..." pkill -f "/usr/bin/copiado" 2>/dev/null || true sleep 0.5 copiado consertar >/dev/null echo echo "Pronto! Versão instalada: $(dpkg-query -W -f='${Version}' copiado). Aperte Win+V."