all: package

package: target/release/upend webui/public/build/main.js
	rm -fr dist
	linuxdeploy-x86_64.AppImage --appdir dist
	cp target/release/upend dist/usr/bin/upend
	cp -r webui/public dist/usr/bin/webui
	cp media/upend.png dist/usr/share/icons/upend.png
	VERSION="$$(grep '^version' Cargo.toml|grep -Eo '[0-9]+\.[0-9]+\.[0-9]+')" \
		linuxdeploy-x86_64.AppImage --appdir dist -d upend.desktop --output appimage

backend: target/release/upend

target/release/upend:
	cargo build --release

tools/upend_js/index.js:
	cd tools/upend_js && yarn install && yarn build

frontend: webui/public/build/main.js

webui/public/build/main.js: tools/upend_js/index.js
	cd webui && yarn add ../tools/upend_js && yarn install && yarn build

lint: backend_lint frontend_lint

backend_lint:
	cargo clippy

frontend_lint:
	cd webui && yarn instlal && yarn lint

backend_test:
	cargo test --workspace --verbose

backend_test_no_default:
	cargo test --no-default-features --workspace --verbose

clean:
	rm -vr target
	rm -vr webui/public/build
	rm -vr tools/upend_js/*.js

update_schema:
	rm -f upend.sqlite3
	diesel migration run --migration-dir migrations/upend/
	diesel print-schema > src/database/inner/schema.rs
