Release / Plano (este commit já foi validado?) (push) Successful in 4s
CI / Trivy (dependências, segredos e configuração) (push) Successful in 9s
CI / Código e scripts (push) Successful in 14s
CI / Pacote .deb (push) Failing after 3s
Release / ci (push) Failing after 18s
Release / Publica a release (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
61 lines
2.5 KiB
Bash
Executable File
61 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Instala (ou atualiza) o Copiado a partir do pacote publicado no Gitea.
|
|
# O repositório é privado: exporte GITEA_TOKEN (token com read:repository).
|
|
set -e
|
|
SERVIDOR="https://git.lucasrguerra.dev.br"
|
|
API="$SERVIDOR/api/v1/repos/lucasrguerra/copiado"
|
|
if [ -z "${GITEA_TOKEN:-}" ]; then
|
|
echo "ERRO: defina GITEA_TOKEN com um token do Gitea (read:repository)." >&2
|
|
exit 1
|
|
fi
|
|
TMP=$(mktemp -d)
|
|
trap 'rm -rf "$TMP"' EXIT
|
|
|
|
# O token vai por um arquivo de configuração do curl, não pela linha de comando,
|
|
# para não aparecer na lista de processos.
|
|
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."
|