The updater reads the latest release from Gitea. update::apply refuses to overwrite anything but the CLI. Release workflow builds the Linux CLI; scripts/build-gui.sh builds the Linux and Windows desktop app. Docs say Linux and Windows only. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
60 lines
2.6 KiB
Bash
Executable File
60 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Compila o app desktop (Tauri) e deixa os pacotes em dist-gui/, com os nomes
|
|
# que a release usa.
|
|
#
|
|
# scripts/build-gui.sh linux # AppImage e .deb; precisa de uma máquina Linux com os pacotes do Tauri
|
|
# scripts/build-gui.sh windows # instalador NSIS, compilado a partir do Linux
|
|
#
|
|
# O Windows usa cargo-xwin (SDK do Windows baixado na hora) e o NSIS, que o Tauri
|
|
# documenta como compilação cruzada experimental. Precisa de: nsis, lld, llvm,
|
|
# clang e `cargo install cargo-xwin`. O .msi não sai daqui (o WiX é só do Windows).
|
|
# `scripts/build-gui.sh windows-docker` roda o mesmo num container, sem instalar nada.
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
platform=${1:?uso: build-gui.sh <linux|windows|windows-docker>}
|
|
tauri() { npx --yes @tauri-apps/cli@2 "$@"; }
|
|
|
|
if [ "$platform" = windows-docker ]; then
|
|
docker volume create sabia-cargo >/dev/null
|
|
docker volume create sabia-rustup >/dev/null
|
|
mkdir -p dist-gui
|
|
exec docker run --rm -v "$PWD":/src -v sabia-cargo:/root/.cargo -v sabia-rustup:/root/.rustup \
|
|
-w /src -e HOST_UID="$(id -u)" -e HOST_GID="$(id -g)" ubuntu:24.04 bash -c '
|
|
set -e
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update -qq
|
|
apt-get install -y -qq curl ca-certificates build-essential pkg-config nsis lld llvm clang nodejs npm unzip >/dev/null
|
|
[ -x /root/.cargo/bin/rustup ] || curl -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal >/dev/null
|
|
export PATH=/root/.cargo/bin:$PATH
|
|
command -v cargo-xwin >/dev/null || cargo install cargo-xwin --locked
|
|
scripts/build-gui.sh windows
|
|
chown -R "$HOST_UID:$HOST_GID" dist-gui apps/gui/src-tauri/target 2>/dev/null || true'
|
|
fi
|
|
|
|
mkdir -p dist-gui
|
|
cd apps/gui/src-tauri
|
|
|
|
# Os ícones derivados do original não ficam todos no repositório.
|
|
[ -f icons/icon.ico ] || tauri icon icons/source.png -o icons
|
|
|
|
case "$platform" in
|
|
linux)
|
|
tauri build --bundles appimage,deb
|
|
bundle=target/release/bundle
|
|
cp "$bundle"/appimage/*.AppImage "$bundle"/deb/*.deb ../../../dist-gui/
|
|
# O atualizador do Tauri (quando o projeto usa) precisa do .sig ao lado.
|
|
cp "$bundle"/appimage/*.AppImage.sig ../../../dist-gui/ 2>/dev/null || true
|
|
;;
|
|
windows)
|
|
rustup target add x86_64-pc-windows-msvc >/dev/null
|
|
tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc --bundles nsis
|
|
bundle=target/x86_64-pc-windows-msvc/release/bundle/nsis
|
|
cp "$bundle"/*-setup.exe ../../../dist-gui/
|
|
cp "$bundle"/*-setup.exe.sig ../../../dist-gui/ 2>/dev/null || true
|
|
;;
|
|
*) echo "plataforma desconhecida: $platform" >&2; exit 2 ;;
|
|
esac
|
|
|
|
ls -1 ../../../dist-gui
|