|
|
|
@ -192,6 +192,58 @@ build_one_target() {
|
|
|
|
(cd "$abs_project" && npm run "$npm_cmd")
|
|
|
|
(cd "$abs_project" && npm run "$npm_cmd")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ensure_tauri_icons() {
|
|
|
|
|
|
|
|
local project_dir="$1"
|
|
|
|
|
|
|
|
local icons_dir="$REPO_ROOT/$project_dir/src-tauri/icons"
|
|
|
|
|
|
|
|
mkdir -p "$icons_dir"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [[ -f "$icons_dir/32x32.png" && -f "$icons_dir/128x128.png" && -f "$icons_dir/256x256.png" ]]; then
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo "==> [$project_dir] 生成默认图标资源(32/128/256)"
|
|
|
|
|
|
|
|
python3 - "$icons_dir" "$project_dir" <<'PY'
|
|
|
|
|
|
|
|
import binascii
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
import struct
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
import zlib
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
icons_dir = sys.argv[1]
|
|
|
|
|
|
|
|
project_name = sys.argv[2]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if "broadcast" in project_name:
|
|
|
|
|
|
|
|
color = (16, 185, 129) # green
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
color = (37, 99, 235) # blue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def png_chunk(tag: bytes, data: bytes) -> bytes:
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|
|
|
struct.pack("!I", len(data))
|
|
|
|
|
|
|
|
+ tag
|
|
|
|
|
|
|
|
+ data
|
|
|
|
|
|
|
|
+ struct.pack("!I", binascii.crc32(tag + data) & 0xFFFFFFFF)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def write_png(path: str, size: int, rgb: tuple[int, int, int]) -> None:
|
|
|
|
|
|
|
|
row = bytes(rgb) * size
|
|
|
|
|
|
|
|
raw = b"".join(b"\x00" + row for _ in range(size))
|
|
|
|
|
|
|
|
ihdr = struct.pack("!IIBBBBB", size, size, 8, 2, 0, 0, 0)
|
|
|
|
|
|
|
|
idat = zlib.compress(raw, 9)
|
|
|
|
|
|
|
|
png = (
|
|
|
|
|
|
|
|
b"\x89PNG\r\n\x1a\n"
|
|
|
|
|
|
|
|
+ png_chunk(b"IHDR", ihdr)
|
|
|
|
|
|
|
|
+ png_chunk(b"IDAT", idat)
|
|
|
|
|
|
|
|
+ png_chunk(b"IEND", b"")
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
with open(path, "wb") as f:
|
|
|
|
|
|
|
|
f.write(png)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for size in (32, 128, 256):
|
|
|
|
|
|
|
|
write_png(os.path.join(icons_dir, f"{size}x{size}.png"), size, color)
|
|
|
|
|
|
|
|
PY
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
collect_debs() {
|
|
|
|
collect_debs() {
|
|
|
|
local project_dir="$1"
|
|
|
|
local project_dir="$1"
|
|
|
|
local arch_label="$2"
|
|
|
|
local arch_label="$2"
|
|
|
|
@ -217,6 +269,7 @@ collect_debs() {
|
|
|
|
|
|
|
|
|
|
|
|
build_project() {
|
|
|
|
build_project() {
|
|
|
|
local project_dir="$1"
|
|
|
|
local project_dir="$1"
|
|
|
|
|
|
|
|
ensure_tauri_icons "$project_dir"
|
|
|
|
if [[ "$BUILD_ARCH" == "all" || "$BUILD_ARCH" == "amd64" ]]; then
|
|
|
|
if [[ "$BUILD_ARCH" == "all" || "$BUILD_ARCH" == "amd64" ]]; then
|
|
|
|
echo ""
|
|
|
|
echo ""
|
|
|
|
echo "######## $project_dir: amd64 ########"
|
|
|
|
echo "######## $project_dir: amd64 ########"
|
|
|
|
|