

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
	@_utils/release.sh

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
