mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 07:04:35 +00:00
- content/ + scripts/build-content.py produce content.json for every app - stable lesson IDs with one-time progress migration (Swift, Kotlin) - shared answer-check tests (tests/answers.json) for Kotlin and Swift - android/desktop: Compose app with updater, speech and GTK progress import - CI packages AppImage and Windows zip with ProGuard, runs the tests Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
1.7 KiB
Makefile
63 lines
1.7 KiB
Makefile
# Every app reads the lessons from content/ (built into content.json).
|
|
# Android, Linux, Windows: Kotlin + Compose in android/ (shared code in android/shared)
|
|
# iOS, macOS: Swift + SwiftUI in ios/ and macos/
|
|
#
|
|
# Published builds pass COMMIT (the CI workflow exports it); the updaters
|
|
# compare it against the build in the repository. Without it a build stays
|
|
# "dev" and never offers an update.
|
|
|
|
GRADLE = cd android && ./gradlew
|
|
|
|
all: content
|
|
|
|
content:
|
|
python3 scripts/build-content.py
|
|
|
|
# Runs the desktop app from source on this machine (Linux, Windows or macOS).
|
|
run:
|
|
$(GRADLE) :desktop:run
|
|
|
|
# Answer checks shared by Kotlin and Swift (tests/answers.json), plus
|
|
# progress migration and import of GTK progress.
|
|
test:
|
|
$(GRADLE) :desktop:test
|
|
@if command -v xcrun >/dev/null 2>&1; then \
|
|
chmod +x scripts/test-answers-swift.sh && ./scripts/test-answers-swift.sh; \
|
|
else \
|
|
echo "Swift checks skipped (no Xcode)"; \
|
|
fi
|
|
|
|
android:
|
|
$(GRADLE) :app:assembleRelease
|
|
|
|
linux:
|
|
chmod +x scripts/bundle-linux.sh
|
|
./scripts/bundle-linux.sh
|
|
|
|
windows:
|
|
bash scripts/bundle-windows.sh
|
|
|
|
ios:
|
|
chmod +x scripts/bundle-ios.sh
|
|
./scripts/bundle-ios.sh
|
|
|
|
macos:
|
|
chmod +x scripts/bundle-macos-swift.sh
|
|
./scripts/bundle-macos-swift.sh
|
|
|
|
# Browsers render .command/.sh/.cmd as text/plain. Rebuild these zips after
|
|
# changing a script so the README download links stay in sync. The macOS zip
|
|
# is a double-clickable .app — no Terminal, no chmod.
|
|
installer-zips:
|
|
chmod +x installers/pack-installer-zips.sh
|
|
./installers/pack-installer-zips.sh
|
|
|
|
smoke:
|
|
chmod +x scripts/smoke-platforms.sh
|
|
./scripts/smoke-platforms.sh
|
|
|
|
clean:
|
|
rm -rf build dist dist-android dist-ios
|
|
$(GRADLE) clean
|
|
|
|
.PHONY: all content run test android linux windows ios macos installer-zips smoke clean
|