@@ -15,13 +15,21 @@ RUST_MANIFEST ?= src-tauri/Cargo.toml
1515NODE_MODULES_DIR ?= node_modules
1616PNPM_STORE_DIR ?= .pnpm-store
1717TAURI_TARGET_DIR ?= src-tauri/target
18+ TAURI_BUILD_CONFIG ?= src-tauri/tauri.build.config.json
19+ TAURI_SIGNING_PRIVATE_KEY_OUT ?= $(HOME ) /.tauri/astrbot.key
20+ ASTRBOT_UPDATER_ENDPOINT ?= https://github.com/AstrBotDevs/AstrBot-desktop/releases/latest/download/latest.json
21+ ASTRBOT_UPDATER_PUBKEY ?=
22+ ASTRBOT_UPDATER_PUBKEY_FILE ?=
23+ ASTRBOT_ENABLE_UPDATER_ARTIFACTS ?= 1
24+ ASTRBOT_TAURI_BUNDLES ?=
1825# Single source of env keys managed by `make clean-env`.
1926# If build/resource scripts start consuming a new persistent env var, add it here.
20- ASTRBOT_ENV_KEYS := ASTRBOT_SOURCE_DIR ASTRBOT_SOURCE_GIT_URL ASTRBOT_SOURCE_GIT_REF ASTRBOT_DESKTOP_VERSION ASTRBOT_BUILD_SOURCE_DIR
27+ ASTRBOT_ENV_KEYS := ASTRBOT_SOURCE_DIR ASTRBOT_SOURCE_GIT_URL ASTRBOT_SOURCE_GIT_REF ASTRBOT_DESKTOP_VERSION ASTRBOT_BUILD_SOURCE_DIR ASTRBOT_UPDATER_ENDPOINT ASTRBOT_UPDATER_PUBKEY ASTRBOT_UPDATER_PUBKEY_FILE ASTRBOT_ENABLE_UPDATER_ARTIFACTS ASTRBOT_TAURI_BUNDLES TAURI_SIGNING_PRIVATE_KEY TAURI_SIGNING_PRIVATE_KEY_PATH TAURI_SIGNING_PRIVATE_KEY_PASSWORD
2128# Hash of ASTRBOT_ENV_KEYS for stale reset-script detection in `make clean-env`.
2229ASTRBOT_ENV_KEYS_HASH := $(shell (printf '% s\n' "$(ASTRBOT_ENV_KEYS ) " | shasum -a 256 2>/dev/null || printf '% s\n' "$(ASTRBOT_ENV_KEYS ) " | sha256sum 2>/dev/null || printf '% s\n' "$(ASTRBOT_ENV_KEYS ) " | cksum 2>/dev/null) | awk '{print $$1}' | head -n 1)
2330
2431.PHONY : help deps sync-version update prepare-webui prepare-backend prepare-resources dev build \
32+ signing-key render-tauri-config build-signed \
2533 prepare rebuild lint test doctor prune size clean clean-rust clean-resources \
2634 clean-vendor-local clean-vendor clean-node clean-env clean-all
2735
3846 @echo " make dev Run Tauri dev"
3947 @echo " make build Run Tauri build"
4048 @echo " (set ASTRBOT_SOURCE_DIR=... or ASTRBOT_BUILD_SOURCE_DIR=...)"
49+ @echo " make signing-key Generate updater signing key pair"
50+ @echo " (TAURI_SIGNING_PRIVATE_KEY_OUT=$( TAURI_SIGNING_PRIVATE_KEY_OUT) )"
51+ @echo " make render-tauri-config Generate temporary tauri build override config"
52+ @echo " (ASTRBOT_UPDATER_ENDPOINT / ASTRBOT_UPDATER_PUBKEY / ASTRBOT_UPDATER_PUBKEY_FILE)"
53+ @echo " make build-signed Build with --config $( TAURI_BUILD_CONFIG) "
54+ @echo " (optional ASTRBOT_TAURI_BUNDLES=deb,rpm,appimage)"
4155 @echo " make rebuild Clean and build"
4256 @echo " make lint Run formatting and clippy checks"
4357 @echo " make test Run Rust + script behavior tests"
@@ -104,6 +118,51 @@ build:
104118 fi ; \
105119 pnpm run build
106120
121+ signing-key :
122+ cargo tauri signer generate -w " $( TAURI_SIGNING_PRIVATE_KEY_OUT) "
123+
124+ render-tauri-config :
125+ @set -e; \
126+ updater_pubkey=" $( ASTRBOT_UPDATER_PUBKEY) " ; \
127+ if [ -z " $$ updater_pubkey" ] && [ -n " $( ASTRBOT_UPDATER_PUBKEY_FILE) " ]; then \
128+ updater_pubkey=" $$ (cat " $(ASTRBOT_UPDATER_PUBKEY_FILE ) " )" ; \
129+ fi ; \
130+ disable_flag=" " ; \
131+ case " $( ASTRBOT_ENABLE_UPDATER_ARTIFACTS) " in \
132+ 0| false| False| FALSE| no| No| NO| off| Off| OFF) disable_flag=" --disable-updater-artifacts" ;; \
133+ esac ; \
134+ python3 scripts/ci/render-tauri-build-config.py \
135+ --output " $( TAURI_BUILD_CONFIG) " \
136+ --updater-endpoint " $( ASTRBOT_UPDATER_ENDPOINT) " \
137+ --updater-pubkey " $$ updater_pubkey" \
138+ $$ disable_flag
139+
140+ build-signed : render-tauri-config
141+ @set -e; \
142+ build_version=" $( ASTRBOT_DESKTOP_VERSION) " ; \
143+ build_source_dir=" $( ASTRBOT_BUILD_SOURCE_DIR) " ; \
144+ if [ -z " $$ build_source_dir" ]; then \
145+ build_source_dir=" $( ASTRBOT_SOURCE_DIR) " ; \
146+ fi ; \
147+ if [ -z " $$ build_version" ]; then \
148+ build_version=" $$ (node -e " console.log(require(' ./package.json' ).version)" )" ; \
149+ fi ; \
150+ if [ -n " $$ build_source_dir" ]; then \
151+ echo " Using build source dir: $$ build_source_dir" ; \
152+ fi ; \
153+ echo " Build resource source dir: $$ {build_source_dir:-<auto vendor from git ref>}" ; \
154+ export ASTRBOT_SOURCE_GIT_URL=" $( ASTRBOT_SOURCE_GIT_URL) " ; \
155+ export ASTRBOT_SOURCE_GIT_REF=" $( ASTRBOT_SOURCE_GIT_REF) " ; \
156+ export ASTRBOT_DESKTOP_VERSION=" $$ build_version" ; \
157+ if [ -n " $$ build_source_dir" ]; then \
158+ export ASTRBOT_SOURCE_DIR=" $$ build_source_dir" ; \
159+ fi ; \
160+ build_cmd=" cargo tauri build --config $( TAURI_BUILD_CONFIG) " ; \
161+ if [ -n " $( ASTRBOT_TAURI_BUNDLES) " ]; then \
162+ build_cmd=" $$ build_cmd --bundles \" $( ASTRBOT_TAURI_BUNDLES) \" " ; \
163+ fi ; \
164+ eval " $$ build_cmd"
165+
107166rebuild : clean build
108167
109168lint :
0 commit comments