

HASH=$(shell git rev-parse HEAD)
VERS=$(shell cat pubspec.yaml | grep -oP '(?<=version: ).*' | sed 's/[\s]*//' | tr -d '\n' | tr -d '') # lazy evaluated!

java:
	sudo archlinux-java set java-17-openjdk
	java -version

# runs app locally (linux)
run-linux: java gen
	dart run build_runner build
	_JAVA_OPTIONS="" flutter run -d linux

# runs app locally (web | not really supported)
run-web: java gen
	dart run build_runner build
	_JAVA_OPTIONS="" flutter run -d chrome

# runs on android device (must have network adb enabled teh correct IP)
run-android: java gen
	ping -c1 10.10.10.177
	adb connect 10.10.10.177:5555
	dart run build_runner build
	_JAVA_OPTIONS="" flutter run -d 10.10.10.177:5555

install-release: java gen
	# Install on Pixel 7a
	flutter build apk --release
	flutter run --release -d 35221JEHN07157

release: java gen
	flutter build apk       --release
	cp build/app/outputs/flutter-apk/app-release.apk "_releases/v$(VERS).apk"
	@echo ""
	@echo "--> copied APK to _releases  ( Version: $(VERS) )"
	@echo ""
	flutter build appbundle --release
	cp build/app/outputs/bundle/release/app-release.aab "_releases/v$(VERS).aab"
	cd "build/app/intermediates/merged_native_libs/release/out/lib" && zip -r "../../../../../../../_releases/v$(VERS).symbols.zip" .
	@echo ""
	@echo "--> copied AAB to _releases  ( Version: $(VERS) )"
	@echo ""
	flutter build linux     --release
	tar -czf "_releases/v$(VERS).tar.gz" -C build/linux/x64/release/bundle .
	@echo ""
	@echo "--> copied linux-binary to _releases  ( Version: $(VERS) )"
	@echo ""
	@echo "#=> file://$(shell pwd)/_releases"
	@echo ""
	@echo "Done."

test:
	dart analyze

fix:
	dart fix --apply

gen: java
	./_utils/inc_buildnum.sh
	dart run build_runner build
	dart run git_stamp git_stamp --build-type lite --limit 2

# run `make run` in another terminal (or another variant of flutter run)
autoreload:
	@
	@_utils/autoreload.sh

icons:
	flutter pub run flutter_launcher_icons -f "flutter_launcher_icons.yaml"

clean:
	flutter clean
	flutter pub get

clean-ios: clean
	cd ios && xcodebuild clean && rm -rf Pods Podfile.lock && pod install

clean-android: clean
	cd android && ./gradlew clean


# upgrade all packages (add --major-versions even updates across new major versions)
# https://docs.flutter.dev/release/upgrade
# upgrading flutter can be done via `flutter upgrade`: https://docs.flutter.dev/release/upgrade
# android/gradle updates should be done via androidStudio: https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide
upgrade:
	flutter upgrade
	flutter pub upgrade
	flutter doctor

aider:
	aider --model gemini-2.5-pro --no-auto-commits --no-dirty-commits --test-cmd "flutter build linux" --auto-test --subtree-only
