From f0bfed609193065eb83e201daf9c3d2dfd6ff740 Mon Sep 17 00:00:00 2001 From: by-sonic <171230345+by-sonic@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:31:32 +0300 Subject: [PATCH] =?UTF-8?q?fix(bundle):=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20mainBinaryName=20+=20guard=20=D0=B2=20CI=20(?= =?UTF-8?q?=D1=81=D0=BC.=20hotfix)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 20 ++++++++++++++++++++ .github/workflows/release.yml | 23 +++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- package.json | 2 +- tauri.conf.json | 3 ++- 6 files changed, 48 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 684bb85..42e5a6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,26 @@ jobs: with: components: rustfmt, clippy + # Оба бинаря лежат в одном крейте, и бандлер Tauri без явного указания + # может взять headless CLI как главный исполняемый файл приложения. + # Именно это уехало в v2.0.0-beta.2: .app и .deb содержали tglock-cli, и + # приложение не открывалось ни на одной платформе. + - name: Main binary of the bundle must be the GUI one + run: | + node -e " + const fs = require('fs'); + const conf = JSON.parse(fs.readFileSync('tauri.conf.json', 'utf8')); + const toml = fs.readFileSync('Cargo.toml', 'utf8'); + const gui = toml.split('[[bin]]').slice(1) + .find(b => /required-features\s*=\s*\[\s*\"gui\"\s*\]/.test(b)); + if (!gui) throw new Error('не найден [[bin]] с required-features = [\"gui\"]'); + const name = (gui.match(/name\s*=\s*\"([^\"]+)\"/) || [])[1]; + if (conf.mainBinaryName !== name) { + throw new Error('mainBinaryName=' + conf.mainBinaryName + ', а GUI-бинарь называется ' + name); + } + console.log('mainBinaryName указывает на GUI-бинарь:', name); + " + - name: Check formatting run: cargo fmt --check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ba250f..cffb971 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,6 +75,29 @@ jobs: prerelease: false args: ${{ matrix.args }} + # Смотрит внутрь собранного бандла. v2.0.0-beta.2 опубликовался с зелёным + # CI, хотя .app и .deb содержали headless CLI вместо приложения: сборка + # была успешной, просто никто не проверял, что внутри. + - name: The bundle must contain the GUI binary + if: runner.os == 'macOS' + shell: bash + run: | + app=$(find target -maxdepth 6 -name 'TGLock.app' -type d | head -1) + test -n "$app" || { echo "TGLock.app не найден"; exit 1; } + exe=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleExecutable' "$app/Contents/Info.plist") + echo "CFBundleExecutable = $exe" + test "$exe" = "tglock" || { echo "в бандле не GUI-бинарь"; exit 1; } + test -x "$app/Contents/MacOS/tglock" || { echo "исполняемый файл отсутствует"; exit 1; } + + - name: The bundle must contain the GUI binary + if: runner.os == 'Linux' + shell: bash + run: | + deb=$(find target -maxdepth 6 -name '*.deb' | head -1) + test -n "$deb" || { echo ".deb не найден"; exit 1; } + dpkg-deb -c "$deb" | grep -E ' \./usr/bin/tglock$' \ + || { echo "в .deb нет /usr/bin/tglock:"; dpkg-deb -c "$deb" | grep '/bin/'; exit 1; } + cli: name: Headless CLI ${{ matrix.platform }} needs: publish diff --git a/Cargo.lock b/Cargo.lock index 953610e..fde89af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3799,7 +3799,7 @@ dependencies = [ [[package]] name = "tglock" -version = "2.0.0-beta.2" +version = "2.0.0-beta.3" dependencies = [ "aes", "cipher", diff --git a/Cargo.toml b/Cargo.toml index 9c6cf78..1b3da3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tglock" -version = "2.0.0-beta.2" +version = "2.0.0-beta.3" edition = "2021" rust-version = "1.88" description = "Telegram unblock via local WebSocket tunnel" diff --git a/package.json b/package.json index dd341ef..90946ae 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tglock-ui", "private": true, - "version": "2.0.0-beta.2", + "version": "2.0.0-beta.3", "type": "module", "scripts": { "dev": "vite --port 1420", diff --git a/tauri.conf.json b/tauri.conf.json index 8ba74b4..cb41fec 100644 --- a/tauri.conf.json +++ b/tauri.conf.json @@ -1,8 +1,9 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "TGLock", - "version": "2.0.0-beta.2", + "version": "2.0.0-beta.3", "identifier": "com.bysonic.tglock", + "mainBinaryName": "tglock", "build": { "beforeDevCommand": "npm run dev", "devUrl": "http://localhost:1420",