#!/usr/bin/make -f
# Offline build for the OBS sandbox (no network during build).
# Layout: the orig tarball (DEBTRANSFORM-TAR) provides the app source plus
# vendor/ (crates), node_modules/, and the pinned Rust toolchain .tar.xz, all
# at the source root. Everything is in orig, so dpkg-source has no added files
# to represent (which is what avoids the binary-diff error).

APPID = io.github.lullabyX.sone
RUST_VERSION = 1.95.0
NODE_VERSION = 22.17.0

export CARGO_NET_OFFLINE = true
export CARGO_HOME = $(CURDIR)/.cargo
# NOTE: define *_VERSION above this line — := expands immediately.
export PATH := $(CURDIR)/rust-toolchain/bin:$(CURDIR)/node-v$(NODE_VERSION)-linux-x64/bin:$(PATH)

%:
	dh $@

override_dh_auto_configure:
	# Pinned upstream Rust toolchain ships inside orig (at the source root).
	# Build-time only — never shipped in the package.
	tar -xf rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu.tar.xz
	./rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu/install.sh \
		--prefix=$(CURDIR)/rust-toolchain --disable-ldconfig --without=rust-docs
	# Pinned Node runtime ships inside orig (distro Node too old/missing).
	tar -xf node-v$(NODE_VERSION)-linux-x64.tar.xz
	# Cargo offline source-replacement config (vendor/ is at the source root).
	mkdir -p .cargo
	printf '[source.crates-io]\nreplace-with = "vendored-sources"\n\n[source.vendored-sources]\ndirectory = "$(CURDIR)/vendor"\n' > .cargo/config.toml

override_dh_auto_build:
	./node_modules/.bin/tsc
	./node_modules/.bin/vite build
	cd src-tauri && cargo build --release --offline --locked

override_dh_auto_test:

override_dh_auto_clean:
	rm -rf src-tauri/target dist .cargo rust-toolchain rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu node-v$(NODE_VERSION)-linux-x64

override_dh_auto_install:
	install -Dm0755 src-tauri/target/release/sone debian/sone/usr/bin/sone
	# Desktop entry with the native Exec.
	mkdir -p debian/sone/usr/share/applications
	sed 's/^Exec=.*/Exec=sone %u/' data/$(APPID).desktop \
		> debian/sone/usr/share/applications/$(APPID).desktop
	# Icons
	install -Dm0644 src-tauri/icons/32x32.png      debian/sone/usr/share/icons/hicolor/32x32/apps/$(APPID).png
	install -Dm0644 src-tauri/icons/64x64.png      debian/sone/usr/share/icons/hicolor/64x64/apps/$(APPID).png
	install -Dm0644 src-tauri/icons/128x128.png    debian/sone/usr/share/icons/hicolor/128x128/apps/$(APPID).png
	install -Dm0644 src-tauri/icons/128x128@2x.png debian/sone/usr/share/icons/hicolor/256x256/apps/$(APPID).png
	install -Dm0644 src-tauri/icons/icon.png       debian/sone/usr/share/icons/hicolor/512x512/apps/$(APPID).png
	# AppStream metainfo
	install -Dm0644 data/$(APPID).metainfo.xml debian/sone/usr/share/metainfo/$(APPID).metainfo.xml
